moon_utilities configuration.py unit test 05/49105/1
authorWuKong <rebirthmonkey@gmail.com>
Fri, 15 Dec 2017 20:11:51 +0000 (21:11 +0100)
committerWuKong <rebirthmonkey@gmail.com>
Fri, 15 Dec 2017 20:13:34 +0000 (21:13 +0100)
Change-Id: I1548eb7ce89c11ccacb55bb4614940a9b438b748
Signed-off-by: WuKong <rebirthmonkey@gmail.com>
moonv4/moon_utilities/tests/unit_python/conftest.py
moonv4/moon_utilities/tests/unit_python/mock_cache.py
moonv4/moon_utilities/tests/unit_python/mock_cache_manager.py [deleted file]
moonv4/moon_utilities/tests/unit_python/mock_components.py [new file with mode: 0644]
moonv4/moon_utilities/tests/unit_python/mock_keystone.py [new file with mode: 0644]
moonv4/moon_utilities/tests/unit_python/test_cache.py
moonv4/moon_utilities/tests/unit_python/test_configuration.py [new file with mode: 0644]
moonv4/moon_utilities/tests/unit_python/utilities.py [new file with mode: 0644]

index 83350c4..7217586 100644 (file)
@@ -1,152 +1,8 @@
-import base64
-import json
-import logging
-import mock_cache_manager as pdp_manager
 import pytest
 import requests_mock
-
-CONF = {
-    "openstack": {
-        "keystone": {
-            "url": "http://keystone:5000/v3",
-            "user": "admin",
-            "check_token": False,
-            "password": "p4ssw0rd",
-            "domain": "default",
-            "certificate": False,
-            "project": "admin"
-        }
-    },
-    "components": {
-        "wrapper": {
-            "bind": "0.0.0.0",
-            "port": 8080,
-            "container": "wukongsun/moon_wrapper:v4.3",
-            "timeout": 5,
-            "hostname": "wrapper"
-        },
-        "manager": {
-            "bind": "0.0.0.0",
-            "port": 8082,
-            "container": "wukongsun/moon_manager:v4.3",
-            "hostname": "manager"
-        },
-        "port_start": 31001,
-        "orchestrator": {
-            "bind": "0.0.0.0",
-            "port": 8083,
-            "container": "wukongsun/moon_orchestrator:v4.3",
-            "hostname": "interface"
-        },
-        "interface": {
-            "bind": "0.0.0.0",
-            "port": 8080,
-            "container": "wukongsun/moon_interface:v4.3",
-            "hostname": "interface"
-        }
-    },
-    "plugins": {
-        "session": {
-            "port": 8082,
-            "container": "asteroide/session:latest"
-        },
-        "authz": {
-            "port": 8081,
-            "container": "wukongsun/moon_authz:v4.3"
-        }
-    },
-    "logging": {
-        "handlers": {
-            "file": {
-                "filename": "/tmp/moon.log",
-                "class": "logging.handlers.RotatingFileHandler",
-                "level": "DEBUG",
-                "formatter": "custom",
-                "backupCount": 3,
-                "maxBytes": 1048576
-            },
-            "console": {
-                "class": "logging.StreamHandler",
-                "formatter": "brief",
-                "level": "INFO",
-                "stream": "ext://sys.stdout"
-            }
-        },
-        "formatters": {
-            "brief": {
-                "format": "%(levelname)s %(name)s %(message)-30s"
-            },
-            "custom": {
-                "format": "%(asctime)-15s %(levelname)s %(name)s %(message)s"
-            }
-        },
-        "root": {
-            "handlers": [
-                "console"
-            ],
-            "level": "ERROR"
-        },
-        "version": 1,
-        "loggers": {
-            "moon": {
-                "handlers": [
-                    "console",
-                    "file"
-                ],
-                "propagate": False,
-                "level": "DEBUG"
-            }
-        }
-    },
-    "slave": {
-        "name": None,
-        "master": {
-            "url": None,
-            "login": None,
-            "password": None
-        }
-    },
-    "docker": {
-        "url": "tcp://172.88.88.1:2376",
-        "network": "moon"
-    },
-    "database": {
-        "url": "sqlite:///database.db",
-        # "url": "mysql+pymysql://moon:p4sswOrd1@db/moon",
-        "driver": "sql"
-    },
-    "messenger": {
-        "url": "rabbit://moon:p4sswOrd1@messenger:5672/moon"
-    }
-}
-
-COMPONENTS = (
-    "logging",
-    "openstack/keystone",
-    "database",
-    "slave",
-    "components/manager",
-    "components/orchestrator",
-    "components/interface",
-)
-
-
-def get_b64_conf(component=None):
-    if component == "components":
-        return base64.b64encode(
-            json.dumps(CONF["components"]).encode('utf-8')+b"\n").decode('utf-8')
-    elif component in CONF:
-        return base64.b64encode(
-            json.dumps(
-                CONF[component]).encode('utf-8')+b"\n").decode('utf-8')
-    elif not component:
-        return base64.b64encode(
-            json.dumps(CONF).encode('utf-8')+b"\n").decode('utf-8')
-    elif "/" in component:
-        key1, _, key2 = component.partition("/")
-        return base64.b64encode(
-            json.dumps(
-                CONF[key1][key2]).encode('utf-8')+b"\n").decode('utf-8')
+import mock_components
+import mock_keystone
+import mock_cache
 
 
 @pytest.fixture(autouse=True)
@@ -154,42 +10,8 @@ def no_requests(monkeypatch):
     """ Modify the response from Requests module
     """
     with requests_mock.Mocker(real_http=True) as m:
-        for component in COMPONENTS:
-            m.register_uri(
-                'GET', 'http://consul:8500/v1/kv/{}'.format(component),
-                json=[{'Key': component, 'Value': get_b64_conf(component)}]
-                )
-        m.register_uri(
-            'GET', 'http://consul:8500/v1/kv/components?recurse=true',
-            json=[
-                {"Key": key, "Value": get_b64_conf(key)} for key in COMPONENTS
-            ],
-            # json={'Key': "components", 'Value': get_b64_conf("components")}
-            )
-        m.register_uri(
-            'POST', 'http://keystone:5000/v3/auth/tokens',
-            headers={'X-Subject-Token': "111111111"}
-        )
-        m.register_uri(
-            'DELETE', 'http://keystone:5000/v3/auth/tokens',
-            headers={'X-Subject-Token': "111111111"}
-        )
-        m.register_uri(
-            'POST', 'http://keystone:5000/v3/users?name=testuser&domain_id=default',
-            json={"users": {}}
-        )
-        m.register_uri(
-            'GET', 'http://keystone:5000/v3/users?name=testuser&domain_id=default',
-            json={"users": {}}
-        )
-        m.register_uri(
-            'POST', 'http://keystone:5000/v3/users/',
-            json={"users": [{
-                "id": "1111111111111"
-            }]}
-        )
-        pdp_manager.mock_managers(m)
+        mock_components.register_components(m)
+        mock_keystone.register_keystone(m)
+        mock_cache.register_cache(m)
         print("End registering URI")
-        yield m
-
-
+        yield m
\ No newline at end of file
index 0da5f02..b2b287a 100644 (file)
@@ -1,9 +1,4 @@
-COMPONENTS = {
-    "manager": {
-        "port": 8082,
-        "hostname": "manager"
-    }
-}
+from utilities import CONF
 
 pdp_mock = {
     "pdp_id1": {
@@ -53,6 +48,7 @@ policies_mock = {
         "description": "test",
     }
 }
+
 subject_mock = {
     "policy_id_1": {
         "subject_id": {
@@ -69,6 +65,7 @@ subject_mock = {
         }
     }
 }
+
 subject_assignment_mock = {
     "subject_id": {
         "policy_id": "ID of the policy",
@@ -77,6 +74,7 @@ subject_assignment_mock = {
         "assignments": [],
     }
 }
+
 object_mock = {
     "policy_id_1": {
         "object_id": {
@@ -171,3 +169,153 @@ rules_mock = {
         }
     }
 }
+
+
+def register_cache(m):
+    """ Modify the response from Requests module
+    """
+    register_pdp(m)
+    register_meta_rules(m)
+    register_policies(m)
+    register_models(m)
+    register_policy_subject(m, "policy_id_1")
+    register_policy_subject(m, "policy_id_2")
+    register_policy_object(m, "policy_id_1")
+    register_policy_object(m, "policy_id_2")
+    register_policy_action(m, "policy_id_1")
+    register_policy_action(m, "policy_id_2")
+    register_policy_subject_assignment(m, "policy_id_1", "subject_id")
+    # register_policy_subject_assignment_list(m1, "policy_id_1")
+    register_policy_subject_assignment(m, "policy_id_2", "subject_id")
+    # register_policy_subject_assignment_list(m1, "policy_id_2")
+    register_policy_object_assignment(m, "policy_id_1", "object_id")
+    # register_policy_object_assignment_list(m1, "policy_id_1")
+    register_policy_object_assignment(m, "policy_id_2", "object_id")
+    # register_policy_object_assignment_list(m1, "policy_id_2")
+    register_policy_action_assignment(m, "policy_id_1", "action_id")
+    # register_policy_action_assignment_list(m1, "policy_id_1")
+    register_policy_action_assignment(m, "policy_id_2", "action_id")
+    # register_policy_action_assignment_list(m1, "policy_id_2")
+    register_rules(m, "policy_id1")
+
+
+def register_pdp(m):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}'.format(CONF['components']['manager']['hostname'],
+                                        CONF['components']['manager']['port'], 'pdp'),
+        json={'pdps': pdp_mock}
+    )
+
+
+def register_meta_rules(m):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}'.format(CONF['components']['manager']['hostname'],
+                                        CONF['components']['manager']['port'], 'meta_rules'),
+        json={'meta_rules': meta_rules_mock}
+    )
+
+
+def register_policies(m):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}'.format(CONF['components']['manager']['hostname'],
+                                        CONF['components']['manager']['port'], 'policies'),
+        json={'policies': policies_mock}
+    )
+
+
+def register_models(m):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}'.format(CONF['components']['manager']['hostname'],
+                                        CONF['components']['manager']['port'], 'models'),
+        json={'models': models_mock}
+    )
+
+
+def register_policy_subject(m, policy_id):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}/{}/subjects'.format(CONF['components']['manager']['hostname'],
+                                                    CONF['components']['manager']['port'], 'policies', policy_id),
+        json={'subjects': subject_mock[policy_id]}
+    )
+
+
+def register_policy_object(m, policy_id):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}/{}/objects'.format(CONF['components']['manager']['hostname'],
+                                                   CONF['components']['manager']['port'], 'policies', policy_id),
+        json={'objects': object_mock[policy_id]}
+    )
+
+
+def register_policy_action(m, policy_id):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}/{}/actions'.format(CONF['components']['manager']['hostname'],
+                                                   CONF['components']['manager']['port'], 'policies', policy_id),
+        json={'actions': action_mock[policy_id]}
+    )
+
+
+def register_policy_subject_assignment(m, policy_id, subj_id):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}/{}/subject_assignments/{}'.format(CONF['components']['manager']['hostname'],
+                                                                  CONF['components']['manager']['port'], 'policies',
+                                                                  policy_id,
+                                                                  subj_id),
+        json={'subject_assignments': subject_assignment_mock}
+    )
+
+
+def register_policy_subject_assignment_list(m, policy_id):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}/{}/subject_assignments'.format(CONF['components']['manager']['hostname'],
+                                                               CONF['components']['manager']['port'], 'policies',
+                                                               policy_id),
+        json={'subject_assignments': subject_assignment_mock}
+    )
+
+
+def register_policy_object_assignment(m, policy_id, obj_id):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}/{}/object_assignments/{}'.format(CONF['components']['manager']['hostname'],
+                                                                 CONF['components']['manager']['port'], 'policies',
+                                                                 policy_id,
+                                                                 obj_id),
+        json={'object_assignments': object_assignment_mock}
+    )
+
+
+def register_policy_object_assignment_list(m, policy_id):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}/{}/object_assignments'.format(CONF['components']['manager']['hostname'],
+                                                              CONF['components']['manager']['port'], 'policies',
+                                                              policy_id),
+        json={'object_assignments': object_assignment_mock}
+    )
+
+
+def register_policy_action_assignment(m, policy_id, action_id):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}/{}/action_assignments/{}'.format(CONF['components']['manager']['hostname'],
+                                                                 CONF['components']['manager']['port'], 'policies',
+                                                                 policy_id,
+                                                                 action_id),
+        json={'action_assignments': action_assignment_mock}
+    )
+
+
+def register_policy_action_assignment_list(m, policy_id):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}/{}/action_assignments'.format(CONF['components']['manager']['hostname'],
+                                                              CONF['components']['manager']['port'], 'policies',
+                                                              policy_id),
+        json={'action_assignments': action_assignment_mock}
+    )
+
+
+def register_rules(m, policy_id):
+    m.register_uri(
+        'GET', 'http://{}:{}/{}/{}/{}'.format(CONF['components']['manager']['hostname'],
+                                              CONF['components']['manager']['port'], 'policies',
+                                              policy_id, 'rules'),
+        json={'rules': rules_mock}
+    )
\ No newline at end of file
diff --git a/moonv4/moon_utilities/tests/unit_python/mock_cache_manager.py b/moonv4/moon_utilities/tests/unit_python/mock_cache_manager.py
deleted file mode 100644 (file)
index 372e78f..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-import mock_cache as data
-
-
-def mock_managers(m1):
-    """ Modify the response from Requests module
-    """
-    register_pdp(m1)
-    register_meta_rules(m1)
-    register_policies(m1)
-    register_models(m1)
-    register_policy_subject(m1, "policy_id_1")
-    register_policy_subject(m1, "policy_id_2")
-    register_policy_object(m1, "policy_id_1")
-    register_policy_object(m1, "policy_id_2")
-    register_policy_action(m1, "policy_id_1")
-    register_policy_action(m1, "policy_id_2")
-    register_policy_subject_assignment(m1, "policy_id_1", "subject_id")
-    # register_policy_subject_assignment_list(m1, "policy_id_1")
-    register_policy_subject_assignment(m1, "policy_id_2", "subject_id")
-    # register_policy_subject_assignment_list(m1, "policy_id_2")
-    register_policy_object_assignment(m1, "policy_id_1", "object_id")
-    # register_policy_object_assignment_list(m1, "policy_id_1")
-    register_policy_object_assignment(m1, "policy_id_2", "object_id")
-    # register_policy_object_assignment_list(m1, "policy_id_2")
-    register_policy_action_assignment(m1, "policy_id_1", "action_id")
-    # register_policy_action_assignment_list(m1, "policy_id_1")
-    register_policy_action_assignment(m1, "policy_id_2", "action_id")
-    # register_policy_action_assignment_list(m1, "policy_id_2")
-    register_rules(m1, "policy_id1")
-
-
-def register_pdp(m1):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}'.format(data.COMPONENTS['manager']['hostname'],
-                                        data.COMPONENTS['manager']['port'], 'pdp'),
-        json={'pdps': data.pdp_mock}
-    )
-
-
-def register_meta_rules(m1):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}'.format(data.COMPONENTS['manager']['hostname'],
-                                        data.COMPONENTS['manager']['port'], 'meta_rules'),
-        json={'meta_rules': data.meta_rules_mock}
-    )
-
-
-def register_policies(m1):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}'.format(data.COMPONENTS['manager']['hostname'],
-                                        data.COMPONENTS['manager']['port'], 'policies'),
-        json={'policies': data.policies_mock}
-    )
-
-
-def register_models(m1):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}'.format(data.COMPONENTS['manager']['hostname'],
-                                        data.COMPONENTS['manager']['port'], 'models'),
-        json={'models': data.models_mock}
-    )
-
-
-def register_policy_subject(m1, policy_id):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}/{}/subjects'.format(data.COMPONENTS['manager']['hostname'],
-                                                    data.COMPONENTS['manager']['port'], 'policies', policy_id),
-        json={'subjects': data.subject_mock[policy_id]}
-    )
-
-
-def register_policy_object(m1, policy_id):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}/{}/objects'.format(data.COMPONENTS['manager']['hostname'],
-                                                   data.COMPONENTS['manager']['port'], 'policies', policy_id),
-        json={'objects': data.object_mock[policy_id]}
-    )
-
-
-def register_policy_action(m1, policy_id):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}/{}/actions'.format(data.COMPONENTS['manager']['hostname'],
-                                                   data.COMPONENTS['manager']['port'], 'policies', policy_id),
-        json={'actions': data.action_mock[policy_id]}
-    )
-
-
-def register_policy_subject_assignment(m1, policy_id, subj_id):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}/{}/subject_assignments/{}'.format(data.COMPONENTS['manager']['hostname'],
-                                                                  data.COMPONENTS['manager']['port'], 'policies',
-                                                                  policy_id,
-                                                                  subj_id),
-        json={'subject_assignments': data.subject_assignment_mock}
-    )
-
-
-def register_policy_subject_assignment_list(m1, policy_id):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}/{}/subject_assignments'.format(data.COMPONENTS['manager']['hostname'],
-                                                               data.COMPONENTS['manager']['port'], 'policies',
-                                                               policy_id),
-        json={'subject_assignments': data.subject_assignment_mock}
-    )
-
-
-def register_policy_object_assignment(m1, policy_id, obj_id):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}/{}/object_assignments/{}'.format(data.COMPONENTS['manager']['hostname'],
-                                                                 data.COMPONENTS['manager']['port'], 'policies',
-                                                                 policy_id,
-                                                                 obj_id),
-        json={'object_assignments': data.object_assignment_mock}
-    )
-
-
-def register_policy_object_assignment_list(m1, policy_id):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}/{}/object_assignments'.format(data.COMPONENTS['manager']['hostname'],
-                                                              data.COMPONENTS['manager']['port'], 'policies',
-                                                              policy_id),
-        json={'object_assignments': data.object_assignment_mock}
-    )
-
-
-def register_policy_action_assignment(m1, policy_id, action_id):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}/{}/action_assignments/{}'.format(data.COMPONENTS['manager']['hostname'],
-                                                                 data.COMPONENTS['manager']['port'], 'policies',
-                                                                 policy_id,
-                                                                 action_id),
-        json={'action_assignments': data.action_assignment_mock}
-    )
-
-
-def register_policy_action_assignment_list(m1, policy_id):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}/{}/action_assignments'.format(data.COMPONENTS['manager']['hostname'],
-                                                              data.COMPONENTS['manager']['port'], 'policies',
-                                                              policy_id),
-        json={'action_assignments': data.action_assignment_mock}
-    )
-
-
-def register_rules(m1, policy_id):
-    m1.register_uri(
-        'GET', 'http://{}:{}/{}/{}/{}'.format(data.COMPONENTS['manager']['hostname'],
-                                              data.COMPONENTS['manager']['port'], 'policies',
-                                              policy_id, 'rules'),
-        json={'rules': data.rules_mock}
-    )
\ No newline at end of file
diff --git a/moonv4/moon_utilities/tests/unit_python/mock_components.py b/moonv4/moon_utilities/tests/unit_python/mock_components.py
new file mode 100644 (file)
index 0000000..a0319e1
--- /dev/null
@@ -0,0 +1,27 @@
+import utilities
+
+COMPONENTS = (
+    "logging",
+    "openstack/keystone",
+    "database",
+    "slave",
+    "components/manager",
+    "components/orchestrator",
+    "components/interface",
+)
+
+
+def register_components(m):
+    for component in COMPONENTS:
+        m.register_uri(
+            'GET', 'http://consul:8500/v1/kv/{}'.format(component),
+            json=[{'Key': component, 'Value': utilities.get_b64_conf(component)}]
+        )
+
+    m.register_uri(
+        'GET', 'http://consul:8500/v1/kv/components?recurse=true',
+        json=[
+            {"Key": key, "Value": utilities.get_b64_conf(key)} for key in COMPONENTS
+            ],
+        # json={'Key': "components", 'Value': get_b64_conf("components")}
+    )
\ No newline at end of file
diff --git a/moonv4/moon_utilities/tests/unit_python/mock_keystone.py b/moonv4/moon_utilities/tests/unit_python/mock_keystone.py
new file mode 100644 (file)
index 0000000..c0b26b8
--- /dev/null
@@ -0,0 +1,23 @@
+def register_keystone(m):
+    m.register_uri(
+        'POST', 'http://keystone:5000/v3/auth/tokens',
+        headers={'X-Subject-Token': "111111111"}
+    )
+    m.register_uri(
+        'DELETE', 'http://keystone:5000/v3/auth/tokens',
+        headers={'X-Subject-Token': "111111111"}
+    )
+    m.register_uri(
+        'POST', 'http://keystone:5000/v3/users?name=testuser&domain_id=default',
+        json={"users": {}}
+    )
+    m.register_uri(
+        'GET', 'http://keystone:5000/v3/users?name=testuser&domain_id=default',
+        json={"users": {}}
+    )
+    m.register_uri(
+        'POST', 'http://keystone:5000/v3/users/',
+        json={"users": [{
+            "id": "1111111111111"
+        }]}
+    )
\ No newline at end of file
index ae4a4a7..3d4f729 100644 (file)
@@ -1,8 +1,7 @@
 import pytest
-import mock_cache as data
 
 
-def test_cache():
+def test_authz_request():
     from moon_utilities import cache
     c = cache.Cache()
     assert isinstance(c.authz_requests, dict)
@@ -73,61 +72,4 @@ def test_cache_manager():
     assert len(cache_obj.meta_rules) == 2
     assert cache_obj.policies is not None
     assert len(cache_obj.policies) == 2
-    assert cache_obj.models is not None
-
-
-def test_get_subject_success():
-    from moon_utilities import cache
-    cache_obj = cache.Cache()
-    policy_id = 'policy_id_1'
-    name = 'subject_name'
-    subject_id = cache_obj.get_subject(policy_id, name)
-    assert subject_id is not None
-
-
-def test_get_subject_failure():
-    from moon_utilities import cache
-    cache_obj = cache.Cache()
-    policy_id = 'policy_id_1'
-    name = 'invalid name'
-    with pytest.raises(Exception) as exception_info:
-        cache_obj.get_subject(policy_id, name)
-    assert str(exception_info.value) == '400: Subject Unknown'
-
-
-def test_get_object_success():
-    from moon_utilities import cache
-    cache_obj = cache.Cache()
-    policy_id = 'policy_id_1'
-    name = 'object_name'
-    object_id = cache_obj.get_object(policy_id, name)
-    assert object_id is not None
-
-
-def test_get_object_failure():
-    from moon_utilities import cache
-    cache_obj = cache.Cache()
-    policy_id = 'policy_id_1'
-    name = 'invalid name'
-    with pytest.raises(Exception) as exception_info:
-        cache_obj.get_object(policy_id, name)
-    assert str(exception_info.value) == '400: Subject Unknown'
-
-
-def test_get_action_success():
-    from moon_utilities import cache
-    cache_obj = cache.Cache()
-    policy_id = 'policy_id_1'
-    name = 'action_name'
-    action_id = cache_obj.get_action(policy_id, name)
-    assert action_id is not None
-
-
-def test_get_action_failure():
-    from moon_utilities import cache
-    cache_obj = cache.Cache()
-    policy_id = 'policy_id_1'
-    name = 'invalid name'
-    with pytest.raises(Exception) as exception_info:
-        cache_obj.get_action(policy_id, name)
-    assert str(exception_info.value) == '400: Subject Unknown'
+    assert cache_obj.models is not None
\ No newline at end of file
diff --git a/moonv4/moon_utilities/tests/unit_python/test_configuration.py b/moonv4/moon_utilities/tests/unit_python/test_configuration.py
new file mode 100644 (file)
index 0000000..0ebff99
--- /dev/null
@@ -0,0 +1,5 @@
+
+def test_get_components():
+    from moon_utilities import configuration
+    assert isinstance(configuration.get_components(), dict)
+
diff --git a/moonv4/moon_utilities/tests/unit_python/utilities.py b/moonv4/moon_utilities/tests/unit_python/utilities.py
new file mode 100644 (file)
index 0000000..1d79d89
--- /dev/null
@@ -0,0 +1,136 @@
+import base64
+import json
+
+
+CONF = {
+    "openstack": {
+        "keystone": {
+            "url": "http://keystone:5000/v3",
+            "user": "admin",
+            "check_token": False,
+            "password": "p4ssw0rd",
+            "domain": "default",
+            "certificate": False,
+            "project": "admin"
+        }
+    },
+    "components": {
+        "wrapper": {
+            "bind": "0.0.0.0",
+            "port": 8080,
+            "container": "wukongsun/moon_wrapper:v4.3",
+            "timeout": 5,
+            "hostname": "wrapper"
+        },
+        "manager": {
+            "bind": "0.0.0.0",
+            "port": 8082,
+            "container": "wukongsun/moon_manager:v4.3",
+            "hostname": "manager"
+        },
+        "port_start": 31001,
+        "orchestrator": {
+            "bind": "0.0.0.0",
+            "port": 8083,
+            "container": "wukongsun/moon_orchestrator:v4.3",
+            "hostname": "interface"
+        },
+        "interface": {
+            "bind": "0.0.0.0",
+            "port": 8080,
+            "container": "wukongsun/moon_interface:v4.3",
+            "hostname": "interface"
+        }
+    },
+    "plugins": {
+        "session": {
+            "port": 8082,
+            "container": "asteroide/session:latest"
+        },
+        "authz": {
+            "port": 8081,
+            "container": "wukongsun/moon_authz:v4.3"
+        }
+    },
+    "logging": {
+        "handlers": {
+            "file": {
+                "filename": "/tmp/moon.log",
+                "class": "logging.handlers.RotatingFileHandler",
+                "level": "DEBUG",
+                "formatter": "custom",
+                "backupCount": 3,
+                "maxBytes": 1048576
+            },
+            "console": {
+                "class": "logging.StreamHandler",
+                "formatter": "brief",
+                "level": "INFO",
+                "stream": "ext://sys.stdout"
+            }
+        },
+        "formatters": {
+            "brief": {
+                "format": "%(levelname)s %(name)s %(message)-30s"
+            },
+            "custom": {
+                "format": "%(asctime)-15s %(levelname)s %(name)s %(message)s"
+            }
+        },
+        "root": {
+            "handlers": [
+                "console"
+            ],
+            "level": "ERROR"
+        },
+        "version": 1,
+        "loggers": {
+            "moon": {
+                "handlers": [
+                    "console",
+                    "file"
+                ],
+                "propagate": False,
+                "level": "DEBUG"
+            }
+        }
+    },
+    "slave": {
+        "name": None,
+        "master": {
+            "url": None,
+            "login": None,
+            "password": None
+        }
+    },
+    "docker": {
+        "url": "tcp://172.88.88.1:2376",
+        "network": "moon"
+    },
+    "database": {
+        "url": "sqlite:///database.db",
+        # "url": "mysql+pymysql://moon:p4sswOrd1@db/moon",
+        "driver": "sql"
+    },
+    "messenger": {
+        "url": "rabbit://moon:p4sswOrd1@messenger:5672/moon"
+    }
+}
+
+
+def get_b64_conf(component=None):
+    if component == "components":
+        return base64.b64encode(
+            json.dumps(CONF["components"]).encode('utf-8')+b"\n").decode('utf-8')
+    elif component in CONF:
+        return base64.b64encode(
+            json.dumps(
+                CONF[component]).encode('utf-8')+b"\n").decode('utf-8')
+    elif not component:
+        return base64.b64encode(
+            json.dumps(CONF).encode('utf-8')+b"\n").decode('utf-8')
+    elif "/" in component:
+        key1, _, key2 = component.partition("/")
+        return base64.b64encode(
+            json.dumps(
+                CONF[key1][key2]).encode('utf-8')+b"\n").decode('utf-8')