Ejemplo n.º 1
0
def test_add_same_model_twice(db):
    subject_category_id, object_category_id, action_category_id, meta_rule_id = mock_data.create_new_meta_rule(
        subject_category_name="subject_category1",
        object_category_name="object_category1",
        action_category_name="action_category1",
        meta_rule_name="meta_rule_1")
    value = {
        "name": "model1",
        "description": "test",
        "meta_rules": [meta_rule_id]
    }
    # prepare
    model_helper.add_model(model_id="model_1", value=value)  # add model twice
    # act
    subject_category_id, object_category_id, action_category_id, meta_rule_id = mock_data.create_new_meta_rule(
        subject_category_name="subject_category2",
        object_category_name="object_category2",
        action_category_name="action_category2",
        meta_rule_name="meta_rule_2")
    value = {
        "name": "model2",
        "description": "test",
        "meta_rules": [meta_rule_id]
    }
    with pytest.raises(ModelExisting) as exception_info:
        model_helper.add_model(model_id="model_1", value=value)
    model_helper.delete_all_models()
    assert str(exception_info.value) == '409: Model Error'
Ejemplo n.º 2
0
def test_delete_models(db):
    subject_category_id, object_category_id, action_category_id, meta_rule_id1 = mock_data.create_new_meta_rule(
        subject_category_name="subject_category6",
        object_category_name="object_category6",
        action_category_name="action_category6",
        meta_rule_name="meta_rule_6")
    model_value1 = {
        "name": "MLS",
        "description": "test",
        "meta_rules": [meta_rule_id1]
    }
    model1 = model_helper.add_model(value=model_value1)
    subject_category_id, object_category_id, action_category_id, meta_rule_id2 = mock_data.create_new_meta_rule(
        subject_category_name="subject_category7",
        object_category_name="object_category7",
        action_category_name="action_category7",
        meta_rule_name="meta_rule_7")
    model_value2 = {
        "name": "rbac",
        "description": "test",
        "meta_rules": [meta_rule_id2]
    }
    model_helper.add_model(value=model_value2)

    id = list(model1)[0]
    model_helper.delete_models(id)
    # assert
    models = model_helper.get_models()
    assert id not in models
    model_helper.delete_all_models()
Ejemplo n.º 3
0
def test_update_policies_model_unused():
    policy_name = uuid4().hex
    client = utilities.register_client()
    req = model_helper.add_model(model_id="mls_model_id" + uuid4().hex)
    model_id = list(req.keys())[0]
    data = {
        "name": policy_name,
        "description": "description of {}".format(policy_name),
        "model_id": model_id,
        "genre": "genre"
    }
    req = client.post("/policies/", data=json.dumps(data),
                      headers={'Content-Type': 'application/json'})
    policy_id = next(iter(utilities.get_json(req.data)['policies']))
    req = model_helper.add_model(model_id="mls_model_id" + uuid4().hex)
    model_id = list(req.keys())[0]
    data = {
        "name": policy_name,
        "description": "description of {}".format(policy_name),
        "model_id": model_id,
        "genre": "genre"
    }
    req = client.patch("/policies/{}".format(policy_id), data=json.dumps(data),
                       headers={'Content-Type': 'application/json'})
    assert req.status_code == 200
Ejemplo n.º 4
0
def test_add_model_generate_new_uuid(db):
    subject_category_id, object_category_id, action_category_id, meta_rule_id1 = mock_data.create_new_meta_rule(
        subject_category_name="subject_category3",
        object_category_name="object_category3",
        action_category_name="action_category3",
        meta_rule_name="meta_rule_3")
    model_value1 = {
        "name": "MLS",
        "description": "test",
        "meta_rules": [meta_rule_id1]
    }
    model1 = model_helper.add_model(value=model_value1)
    subject_category_id, object_category_id, action_category_id, meta_rule_id2 = mock_data.create_new_meta_rule(
        subject_category_name="subject_category4",
        object_category_name="object_category4",
        action_category_name="action_category4",
        meta_rule_name="meta_rule_4")
    model_value2 = {
        "name": "rbac",
        "description": "test",
        "meta_rules": [meta_rule_id2]
    }
    model2 = model_helper.add_model(value=model_value2)

    assert list(model1)[0] != list(model2)[0]
    model_helper.delete_all_models()
Ejemplo n.º 5
0
def test_get_specific_model(db):
    # prepare
    model_helper.add_model(model_id="mls_model_id")
    # act
    models = model_helper.get_models(model_id="mls_model_id")
    # assert
    assert isinstance(models, dict)
    assert models  # assert model is not empty
    assert len(models) is 1
    model_helper.delete_all_models()
Ejemplo n.º 6
0
def get_policy_id(model_name="test_model", policy_name="policy_1", meta_rule_name="meta_rule1", category_prefix=""):
    category_helper.add_subject_category(
        category_prefix + "subject_category_id1",
        value={"name": category_prefix + "subject_category_id1",
               "description": "description 1"})
    category_helper.add_subject_category(
        category_prefix + "subject_category_id2",
        value={"name": category_prefix + "subject_category_id2",
               "description": "description 1"})
    category_helper.add_object_category(
        category_prefix + "object_category_id1",
        value={"name": category_prefix + "object_category_id1",
               "description": "description 1"})
    category_helper.add_action_category(
        category_prefix + "action_category_id1",
        value={"name": category_prefix + "action_category_id1",
               "description": "description 1"})
    meta_rule = meta_rule_helper.add_meta_rule(value=create_meta_rule(meta_rule_name, category_prefix))
    meta_rule_id = list(meta_rule.keys())[0]
    model = model_helper.add_model(value=create_model(meta_rule_id, model_name))
    model_id = list(model.keys())[0]
    value = create_policy(model_id, policy_name)
    policy = policy_helper.add_policies(value=value)
    assert policy
    policy_id = list(policy.keys())[0]
    return policy_id
Ejemplo n.º 7
0
def test_update_model(db):
    subject_category_id, object_category_id, action_category_id, meta_rule_id1 = mock_data.create_new_meta_rule(
        subject_category_name="subject_category8",
        object_category_name="object_category8",
        action_category_name="action_category8",
        meta_rule_name="meta_rule_8")
    # prepare
    model_value = {
        "name": "MLS",
        "description": "test",
        "meta_rules": [meta_rule_id1]
    }
    model = model_helper.add_model(value=model_value)
    model_id = list(model)[0]
    subject_category_id, object_category_id, action_category_id, meta_rule_id2 = mock_data.create_new_meta_rule(
        subject_category_name="subject_category9",
        object_category_name="object_category9",
        action_category_name="action_category9",
        meta_rule_name="meta_rule_9")
    new_model_value = {
        "name": "MLS2",
        "description": "test",
        "meta_rules": [meta_rule_id2]
    }
    # act
    model_helper.update_model(model_id=model_id, value=new_model_value)
    # assert
    model = model_helper.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]
    model_helper.delete_all_models()
Ejemplo n.º 8
0
def test_delete_policies(db):
    model = model_helper.add_model(model_id=uuid4().hex)
    model_id = next(iter(model))
    policy_name1 = uuid4().hex
    value = {
        "name": policy_name1,
        "model_id": model_id,
        "genre": "authz",
        "description": "test",
    }
    policies = policy_helper.add_policies(value=value)
    policy_id1 = list(policies.keys())[0]
    policy_name2 = uuid4().hex
    value = {
        "name": policy_name2,
        "model_id": model_id,
        "genre": "authz",
        "description": "test",
    }
    policies = policy_helper.add_policies(value=value)
    policy_id2 = list(policies.keys())[0]
    assert policy_id1 != policy_id2
    policy_helper.delete_policies(policy_id1)
    policies = policy_helper.get_policies()
    assert policy_id1 not in policies
Ejemplo n.º 9
0
def create_new_policy(subject_category_name=None,
                      object_category_name=None,
                      action_category_name=None,
                      model_name=None,
                      policy_name=None,
                      meta_rule_name=None):
    if not subject_category_name:
        subject_category_name = "subjectCategory_" + uuid4().hex
    if not object_category_name:
        object_category_name = "objectCategory_" + uuid4().hex
    if not action_category_name:
        action_category_name = "actionCategory_" + uuid4().hex

    if not meta_rule_name:
        meta_rule_name = "meta_rule_" + uuid4().hex

    if not model_name:
        model_name = "model_name_" + uuid4().hex
    if not policy_name:
        policy_name = "policy_name_" + uuid4().hex

    subject_category_id, object_category_id, action_category_id, meta_rule_id = create_new_meta_rule(
        subject_category_name=subject_category_name + uuid4().hex,
        object_category_name=object_category_name + uuid4().hex,
        action_category_name=action_category_name + uuid4().hex,
        meta_rule_name=meta_rule_name + uuid4().hex)

    model = model_helper.add_model(
        value=create_model(meta_rule_id, model_name + uuid4().hex))
    model_id = list(model.keys())[0]
    value = create_policy(model_id, policy_name + uuid4().hex)
    policy = add_policies(value=value)
    assert policy
    policy_id = list(policy.keys())[0]
    return subject_category_id, object_category_id, action_category_id, meta_rule_id, policy_id
Ejemplo n.º 10
0
def test_add_model(db):
    # act
    model = model_helper.add_model()
    # assert
    assert isinstance(model, dict)
    assert model  # assert model is not empty
    assert len(model) is 1
    model_helper.delete_all_models()
Ejemplo n.º 11
0
def test_add_models_with_same_name_twice(db):
    subject_category_id, object_category_id, action_category_id, meta_rule_id = mock_data.create_new_meta_rule(
        subject_category_name="subject_category5",
        object_category_name="object_category5",
        action_category_name="action_category5")
    model_value1 = {
        "name": "MLS",
        "description": "test",
        "meta_rules": [meta_rule_id]
    }
    models = model_helper.add_model(value=model_value1)
    assert isinstance(models, dict)
    assert models
    with pytest.raises(Exception) as exception_info:
        model_helper.add_model(value=model_value1)
    model_helper.delete_all_models()
    assert str(exception_info.value) == '409: Model Error'
Ejemplo n.º 12
0
def test_update_meta_rules_without_meta_rules():
    value = {
        "name": "mls_model_id" + uuid4().hex,
        "description": "test",
        "meta_rules": []
    }
    model = model_helper.add_model(value=value)
    model_id = list(model.keys())[0]
    client = utilities.register_client()
    req_update = update_model_without_meta_rules_ids(client, model_id)
    assert req_update[0].status_code == 200
Ejemplo n.º 13
0
def test_update_policy_name_with_existed_one():
    policy_name1 = "testuser" + uuid4().hex
    client = utilities.register_client()
    req = model_helper.add_model(model_id="mls_model_id" + uuid4().hex)
    model_id = list(req.keys())[0]
    data = {
        "name": policy_name1,
        "description": "description of {}".format(policy_name1),
        "model_id": model_id,
        "genre": "genre"
    }
    req = client.post("/policies/", data=json.dumps(data),
                      headers={'Content-Type': 'application/json'})
    policy_id1 = next(iter(utilities.get_json(req.data)['policies']))

    policy_name2 = "testuser" + uuid4().hex
    client = utilities.register_client()
    req = model_helper.add_model(model_id="mls_model_id" + uuid4().hex)
    model_id = list(req.keys())[0]
    data = {
        "name": policy_name2,
        "description": "description of {}".format(policy_name2),
        "model_id": model_id,
        "genre": "genre"
    }
    req = client.post("/policies/", data=json.dumps(data),
                      headers={'Content-Type': 'application/json'})
    policy_id2 = next(iter(utilities.get_json(req.data)['policies']))

    data = {
        "name": policy_name1,
        "description": "description of {}".format(policy_name1),
        "model_id": model_id,
        "genre": "genre"
    }
    req = client.patch("/policies/{}".format(policy_id2), data=json.dumps(data),
                       headers={'Content-Type': 'application/json'})
    assert req.status_code == 409
    assert json.loads(req.data)["message"] == '409: Policy Already Exists'
Ejemplo n.º 14
0
def add_policies(client, name):
    req = model_helper.add_model(model_id="mls_model_id" + uuid4().hex)
    model_id = list(req.keys())[0]
    data = {
        "name": name,
        "description": "description of {}".format(name),
        "model_id": model_id,
        "genre": "genre"
    }
    req = client.post("/policies", data=json.dumps(data),
                      headers={'Content-Type': 'application/json'})
    policies = utilities.get_json(req.data)
    return req, policies
Ejemplo n.º 15
0
def test_add_policies_twice_with_same_id(db):
    policy_id = 'policy_id_1'
    model = model_helper.add_model(model_id=uuid4().hex)
    model_id = next(iter(model))
    value = {
        "name": "test_policy",
        "model_id": model_id,
        "genre": "authz",
        "description": "test",
    }
    policy_helper.add_policies(policy_id, value)
    with pytest.raises(PolicyExisting) as exception_info:
        policy_helper.add_policies(policy_id, value)
    assert str(exception_info.value) == '409: Policy Already Exists'
Ejemplo n.º 16
0
def test_add_policies_twice_with_same_name(db):
    model = model_helper.add_model(model_id=uuid4().hex)
    model_id = next(iter(model))
    policy_name=uuid4().hex
    value = {
        "name": policy_name,
        "model_id": model_id,
        "genre": "authz",
        "description": "test",
    }
    policy_helper.add_policies(value=value)
    with pytest.raises(Exception) as exception_info:
        policy_helper.add_policies(value=value)
    assert str(exception_info.value) == '409: Policy Already Exists'
    assert str(exception_info.value.description)== 'Policy name Existed'
Ejemplo n.º 17
0
def test_add_model_with_existed_meta_rules_list(db):
    subject_category_id, object_category_id, action_category_id, meta_rule_id = mock_data.create_new_meta_rule(
        subject_category_name=uuid4().hex,
        object_category_name=uuid4().hex,
        action_category_name=uuid4().hex)
    model_value1 = {
        "name": uuid4().hex,
        "description": "test",
        "meta_rules": [meta_rule_id]
    }
    models = model_helper.add_model(value=model_value1)
    assert isinstance(models, dict)
    assert models
    model_value1 = {
        "name": uuid4().hex,
        "description": "test",
        "meta_rules": [meta_rule_id]
    }
    with pytest.raises(Exception) as exception_info:
        model_helper.add_model(value=model_value1)
    model_helper.delete_all_models()
    assert str(exception_info.value) == '409: Model Error'
    assert str(exception_info.value.description
               ) == 'Meta Rules List Existed in another Model'
Ejemplo n.º 18
0
def test_update_models_with_no_assigned_policy():
    client = utilities.register_client()

    model = model_helper.add_model(model_id="mls_model_id" + uuid4().hex)
    model_id = list(model.keys())[0]

    data = {
        "name": "model_" + uuid4().hex,
        "description": "description of model_2",
        "meta_rules": []
    }
    req = client.patch("/models/{}".format(model_id),
                       data=json.dumps(data),
                       headers={'Content-Type': 'application/json'})

    assert req.status_code == 200
Ejemplo n.º 19
0
def test_add_policies(db):
    model = model_helper.add_model(model_id=uuid4().hex)
    model_id = next(iter(model))
    value = {
        "name": "test_policy",
        "model_id": model_id,
        "genre": "authz",
        "description": "test",
    }
    policies = policy_helper.add_policies(value=value)
    assert isinstance(policies, dict)
    assert policies
    assert len(policies.keys()) == 1
    policy_id = list(policies.keys())[0]
    for key in ("genre", "name", "model_id", "description"):
        assert key in policies[policy_id]
        assert policies[policy_id][key] == value[key]
Ejemplo n.º 20
0
def test_delete_model_assigned_to_policy():
    policy_name = "testuser" + uuid4().hex
    client = utilities.register_client()
    req = model_helper.add_model(model_id="mls_model_id" + uuid4().hex)
    model_id = list(req.keys())[0]
    data = {
        "name": policy_name,
        "description": "description of {}".format(policy_name),
        "model_id": model_id,
        "genre": "genre"
    }
    req = client.post("/policies",
                      data=json.dumps(data),
                      headers={'Content-Type': 'application/json'})
    req = client.delete("/models/{}".format(model_id))
    assert req.status_code == 400
    assert json.loads(req.data)["message"] == '400: Model With Policy Error'
Ejemplo n.º 21
0
def test_delete_model_assigned_to_policy(db):
    model_value1 = {"name": "MLS", "description": "test", "meta_rules": []}
    models = model_helper.add_model(value=model_value1)
    assert isinstance(models, dict)
    assert models
    assert len(models.keys()) == 1
    model_id = list(models.keys())[0]
    value = {
        "name": "test_policy",
        "model_id": model_id,
        "genre": "authz",
        "description": "test",
    }
    policy_helper.add_policies(value=value)
    with pytest.raises(DeleteModelWithPolicy) as exception_info:
        model_helper.delete_models(uuid=model_id)
    assert str(exception_info.value) == '400: Model With Policy Error'
Ejemplo n.º 22
0
def test_add_models_with_meta_rule_key():
    client = utilities.register_client()

    model = model_helper.add_model(model_id="mls_model_id" + uuid4().hex)
    model_id = list(model.keys())[0]

    data = {
        "name": "model_" + uuid4().hex,
        "description": "description of model_2",
    }
    req = client.patch("/models/{}".format(model_id),
                       data=json.dumps(data),
                       headers={'Content-Type': 'application/json'})

    assert req.status_code == 400
    assert json.loads(
        req.data)["message"] == "Invalid Key :meta_rules not found"
Ejemplo n.º 23
0
def test_add_models(db):
    subject_category_id, object_category_id, action_category_id, meta_rule_id = mock_data.create_new_meta_rule(
        subject_category_name="subject_category5",
        object_category_name="object_category5",
        action_category_name="action_category5")
    model_value1 = {
        "name": "MLS",
        "description": "test",
        "meta_rules": [meta_rule_id]
    }
    models = model_helper.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]
    model_helper.delete_all_models()
Ejemplo n.º 24
0
def test_update_models_with_assigned_policy():
    client = utilities.register_client()

    model = model_helper.add_model(model_id="mls_model_id" + uuid4().hex)
    model_id = list(model.keys())[0]
    value = {
        "name": "test_policy" + uuid4().hex,
        "model_id": model_id,
        "description": "test",
    }
    policy = policy_helper.add_policies(value=value)
    data = {
        "name": "model_" + uuid4().hex,
        "description": "description of model_2",
        "meta_rules": []
    }
    req = client.patch("/models/{}".format(model_id),
                       data=json.dumps(data),
                       headers={'Content-Type': 'application/json'})

    assert req.status_code == 400
    assert json.loads(req.data)["message"] == "400: Model With Policy Error"