diff --git a/tests/agrirouter/api/__init__.py b/tests/agrirouter/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/agrirouter/api/test_enums.py b/tests/agrirouter/api/test_enums.py new file mode 100644 index 0000000..a19057a --- /dev/null +++ b/tests/agrirouter/api/test_enums.py @@ -0,0 +1,25 @@ +import unittest + +import pytest + +from src.agrirouter.api.enums import BaseEnum + + +class TestEnum(BaseEnum): + VALUE1 = 'value1' + VALUE2 = 'value2' + + +class TestBaseEnum(unittest.TestCase): + + @pytest.fixture(autouse=True) + def setup_class(self): + self.enum = TestEnum + + def test_choices(self): + expected_choices = [('value1', 'VALUE1'), ('value2', 'VALUE2')] + assert self.enum.choices() == expected_choices + + def test_values_list(self): + expected_values_list = ['value1', 'value2'] + assert self.enum.values_list() == expected_values_list diff --git a/tests/agrirouter/api/test_environments.py b/tests/agrirouter/api/test_environments.py new file mode 100644 index 0000000..dca9142 --- /dev/null +++ b/tests/agrirouter/api/test_environments.py @@ -0,0 +1,57 @@ +import unittest + +from src.agrirouter.api import environments + + +class TestEnvironments(unittest.TestCase): + def test_get_base_url(self): + env = environments.BaseEnvironment() + assert env.get_base_url() == "" + + def test_get_api_prefix(self): + env = environments.BaseEnvironment() + assert env.get_api_prefix() == "" + + def test_get_registration_service_url(self): + env = environments.BaseEnvironment() + assert env.get_registration_service_url() == "" + + def test_get_onboard_url(self): + env = environments.BaseEnvironment() + expected_url = "/registration/onboard" + assert env.get_onboard_url() == expected_url + + def test_get_secured_onboard_url(self): + env = environments.BaseEnvironment() + expected_url = "/registration/onboard/request" + assert env.get_secured_onboard_url() == expected_url + + def test_get_verify_onboard_request_url(self): + env = environments.BaseEnvironment() + expected_url = "/registration/onboard/verify" + assert env.get_verify_onboard_request_url() == expected_url + + def test_get_revoke_url(self): + env = environments.BaseEnvironment() + expected_url = "/registration/onboard/revoke" + assert env.get_revoke_url() == expected_url + + def test_get_agrirouter_login_url(self): + env = environments.BaseEnvironment() + expected_url = "/app" + assert env.get_agrirouter_login_url() == expected_url + + def test_get_secured_onboarding_authorization_url(self): + env = environments.BaseEnvironment() + expected_url = "/application/test_app/authorize?response_type=test_response_type&state=test_state&redirect_uri=test_redirect_uri" # noqa + assert env.get_secured_onboarding_authorization_url("test_app", "test_response_type", "test_state", # noqa + "test_redirect_uri") == expected_url + + def test_get_mqtt_server_url(self): + env = environments.BaseEnvironment() + expected_url = "ssl://test_host:test_port" + assert env.get_mqtt_server_url("test_host", "test_port") == expected_url + + def test_get_env_public_key(self): + env = environments.BaseEnvironment() + assert env.get_env_public_key() is None diff --git a/tests/agrirouter/auth/__init__.py b/tests/agrirouter/auth/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/agrirouter/auth/test_auth.py b/tests/agrirouter/auth/test_auth.py new file mode 100644 index 0000000..fffc48a --- /dev/null +++ b/tests/agrirouter/auth/test_auth.py @@ -0,0 +1,54 @@ +import unittest + +from agrirouter.api.enums import ResponseTypes +from agrirouter.api.environments import BaseEnvironment +from agrirouter.auth.auth import Authorization +from agrirouter.auth.parameters import AuthUrlParameter + + +class MockEnvironment(BaseEnvironment): + def get_secured_onboarding_authorization_url(self, **kwargs): + return 'https://secured.url' + + def get_env_public_key(self): + return 'public_key_env' + + +class TestAuthorization(unittest.TestCase): + + def test_authorization_initialization(self): + authorization = Authorization(MockEnvironment(), 'public_key', 'private_key') + assert authorization._public_key == 'public_key' + assert authorization._private_key == 'private_key' + + def test_get_auth_request_url(self): + authorization = Authorization(MockEnvironment(), 'public_key', 'private_key') + parameters = AuthUrlParameter(application_id='app_id', response_type=ResponseTypes.ONBOARD.value, + state='state', + redirect_uri='redirect_uri') + auth_url = authorization.get_auth_request_url(parameters=parameters) + assert auth_url == 'https://secured.url' + + def test_extract_auth_response(self): + authorization = Authorization(MockEnvironment(), 'public_key', 'private_key') + auth_response = authorization.extract_auth_response( + 'https://example.com/?state=state&token=token&signature=signature') + assert auth_response.state == 'state' + assert auth_response.token == 'token' + assert auth_response.signature == 'signature' + assert auth_response.error is None + + def test_extract_auth_response_and_error(self): + authorization = Authorization(MockEnvironment(), 'public_key', 'private_key') + auth_response = authorization.extract_auth_response( + 'https://example.com/?state=state&token=token&signature=signature&error=error') + assert auth_response.state == 'state' + assert auth_response.token == 'token' + assert auth_response.signature == 'signature' + assert auth_response.error == 'error' + + def test_extract_query_params(self): + query_str = "param1=value1¶m2=value2¶m3=value3" + extracted_params = Authorization._extract_query_params(query_str) + expected_params = {'param1': 'value1', 'param2': 'value2', 'param3': 'value3'} + assert extracted_params == expected_params