aboutsummaryrefslogtreecommitdiffstats
path: root/python_moondb/tests/unit_python/models/test_models.py
diff options
context:
space:
mode:
Diffstat (limited to 'python_moondb/tests/unit_python/models/test_models.py')
-rw-r--r--python_moondb/tests/unit_python/models/test_models.py161
1 files changed, 161 insertions, 0 deletions
diff --git a/python_moondb/tests/unit_python/models/test_models.py b/python_moondb/tests/unit_python/models/test_models.py
new file mode 100644
index 00000000..e56fea6b
--- /dev/null
+++ b/python_moondb/tests/unit_python/models/test_models.py
@@ -0,0 +1,161 @@
+import pytest
+
+
+def get_models(model_id=None):
+ from python_moondb.core import ModelManager
+ return ModelManager.get_models(user_id= None , model_id= model_id)
+
+
+def add_model(model_id=None, value=None):
+ from python_moondb.core import ModelManager
+ if not value:
+ value = {
+ "name": "MLS",
+ "description": "test",
+ "meta_rules": "meta_rule_mls_1"
+ }
+ return ModelManager.add_model(user_id=None, model_id=model_id, value=value)
+
+
+def delete_models(uuid=None, name=None):
+ from python_moondb.core import ModelManager
+ if not uuid:
+ for model_id, model_value in get_models():
+ if name == model_value['name']:
+ uuid = model_id
+ break
+ ModelManager.delete_model(user_id=None, model_id=uuid)
+
+
+def update_model(model_id=None, value=None):
+ from python_moondb.core import ModelManager
+ return ModelManager.update_model(user_id=None, model_id=model_id, value=value)
+
+
+def test_get_models_empty(db):
+ # act
+ models = get_models()
+ # assert
+ assert isinstance(models, dict)
+ assert not models
+
+
+def test_get_model(db):
+ # prepare
+ add_model(model_id="mls_model_id")
+ # act
+ models = get_models()
+ # assert
+ assert isinstance(models, dict)
+ assert models # assert model is not empty
+ assert len(models) is 1
+
+
+def test_get_specific_model(db):
+ # prepare
+ add_model(model_id="mls_model_id")
+ add_model(model_id="rbac_model_id")
+ # act
+ models = get_models(model_id="mls_model_id")
+ # assert
+ assert isinstance(models, dict)
+ assert models # assert model is not empty
+ assert len(models) is 1
+
+
+def test_add_model(db):
+ # act
+ model = add_model()
+ # assert
+ assert isinstance(model, dict)
+ assert model # assert model is not empty
+ assert len(model) is 1
+
+
+def test_add_same_model_twice(db):
+ # prepare
+ add_model(model_id="model_1") # add model twice
+ # act
+ with pytest.raises(Exception) as exception_info:
+ add_model(model_id="model_1")
+ assert str(exception_info.value) == '409: Model Error'
+
+
+def test_add_model_generate_new_uuid(db):
+ model_value1 = {
+ "name": "MLS",
+ "description": "test",
+ "meta_rules": "meta_rule_mls_1"
+ }
+ model1 = add_model(value=model_value1)
+
+ model_value2 = {
+ "name": "rbac",
+ "description": "test",
+ "meta_rules": "meta_rule_mls_2"
+ }
+ model2 = add_model(value=model_value2)
+
+ assert list(model1)[0] != list(model2)[0]
+
+
+def test_add_models(db):
+ model_value1 = {
+ "name": "MLS",
+ "description": "test",
+ "meta_rules": "meta_rule_mls_1"
+ }
+ models = add_model(value=model_value1)
+ assert isinstance(models, dict)
+ assert models
+ assert len(models.keys()) == 1
+ model_id = list(models.keys())[0]
+ for key in ("name", "meta_rules", "description"):
+ assert key in models[model_id]
+ assert models[model_id][key] == model_value1[key]
+
+
+def test_delete_models(db):
+ model_value1 = {
+ "name": "MLS",
+ "description": "test",
+ "meta_rules": "meta_rule_mls_1"
+ }
+ model1 = add_model(value=model_value1)
+
+ model_value2 = {
+ "name": "rbac",
+ "description": "test",
+ "meta_rules": "meta_rule_mls_2"
+ }
+ model2 = add_model(value=model_value2)
+
+ id = list(model1)[0]
+ delete_models(id)
+ # assert
+ models = get_models()
+ assert id not in models
+
+
+def test_update_model(db):
+ # prepare
+ model_value = {
+ "name": "MLS",
+ "description": "test",
+ "meta_rules": "meta_rule_mls_1"
+ }
+ model = add_model(value=model_value)
+ model_id = list(model)[0]
+ new_model_value = {
+ "name": "MLS",
+ "description": "test",
+ "meta_rules": "meta_rule_mls_2"
+ }
+ # act
+ update_model(model_id=model_id, value=new_model_value)
+ # assert
+ model = get_models(model_id)
+
+ for key in ("name", "meta_rules", "description"):
+ assert key in model[model_id]
+ assert model[model_id][key] == new_model_value[key] \ No newline at end of file