import pytest
import glsdk
from gltesting.fixtures import *
def test_credentials_load_from_registered_client(scheduler, clients):
c = clients.new()
c.register(configure=True)
creds_path = c.directory / "greenlight.auth"
assert creds_path.exists(), "greenlight.auth file should exist after registration"
creds_bytes = creds_path.read_bytes()
assert len(creds_bytes) > 0, "Credentials file should not be empty"
credentials = glsdk.Credentials.load(creds_bytes)
assert credentials is not None
assert isinstance(credentials, glsdk.Credentials)
def test_credentials_load_empty_data(scheduler, clients):
empty_data = b""
credentials = glsdk.Credentials.load(empty_data)
assert credentials is not None
assert isinstance(credentials, glsdk.Credentials)
def test_credentials_load_invalid_data(scheduler, clients):
invalid_data = b"not valid credentials data at all!"
credentials = glsdk.Credentials.load(invalid_data)
assert credentials is not None
def test_credentials_multiple_loads(scheduler, clients):
c = clients.new()
c.register(configure=True)
creds_bytes = (c.directory / "greenlight.auth").read_bytes()
creds1 = glsdk.Credentials.load(creds_bytes)
creds2 = glsdk.Credentials.load(creds_bytes)
creds3 = glsdk.Credentials.load(creds_bytes)
assert isinstance(creds1, glsdk.Credentials)
assert isinstance(creds2, glsdk.Credentials)
assert isinstance(creds3, glsdk.Credentials)
def test_credentials_from_recovered_client(scheduler, clients):
secret = bytes([42] * 32)
c1 = clients.new(secret=secret)
c1.register(configure=False)
c2 = clients.new(secret=secret)
c2.recover(configure=True)
creds_path = c2.directory / "greenlight.auth"
assert creds_path.exists()
creds_bytes = creds_path.read_bytes()
credentials = glsdk.Credentials.load(creds_bytes)
assert credentials is not None
assert isinstance(credentials, glsdk.Credentials)
def test_credentials_type_error_fails():
with pytest.raises(TypeError) as exc_info:
glsdk.Credentials.load("this is a string, not bytes")
assert "bytes" in str(exc_info.value).lower() or "type" in str(exc_info.value).lower()