1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
import api.utilities as utilities
import json
from helpers import data_builder as builder
from uuid import uuid4
from helpers import policy_helper
def get_rules(client, policy_id):
req = client.get("/policies/{}/rules".format(policy_id))
rules = utilities.get_json(req.data)
return req, rules
def add_rules_without_policy_id(client):
subject_category_id, object_category_id, action_category_id, meta_rule_id = builder.create_new_meta_rule()
data = {
"meta_rule_id": meta_rule_id,
"rule": [subject_category_id, object_category_id, action_category_id],
"instructions": (
{"decision": "grant"},
),
"enabled": True
}
req = client.post("/policies/{}/rules".format(None), data=json.dumps(data),
headers={'Content-Type': 'application/json'})
rules = utilities.get_json(req.data)
return req, rules
def add_rules_without_meta_rule_id(client, policy_id):
data = {
"meta_rule_id": "",
"rule": ["subject_data_id2", "object_data_id2", "action_data_id2"],
"instructions": (
{"decision": "grant"},
),
"enabled": True
}
req = client.post("/policies/{}/rules".format(policy_id), data=json.dumps(data),
headers={'Content-Type': 'application/json'})
rules = utilities.get_json(req.data)
return req, rules
def add_rules_without_rule(client, policy_id):
data = {
"meta_rule_id": "meta_rule_id1",
"instructions": (
{"decision": "grant"},
),
"enabled": True
}
req = client.post("/policies/{}/rules".format(policy_id), data=json.dumps(data),
headers={'Content-Type': 'application/json'})
rules = utilities.get_json(req.data)
return req, rules
def delete_rules(client, policy_id, meta_rule_id):
req = client.delete("/policies/{}/rules/{}".format(policy_id, meta_rule_id))
return req
def test_get_rules():
policy_id = utilities.get_policy_id()
client = utilities.register_client()
req, rules = get_rules(client, policy_id)
assert req.status_code == 200
assert isinstance(rules, dict)
assert "rules" in rules
return req, rules
def test_add_rules():
client = utilities.register_client()
req, rules, policy = builder.add_rules(client, )
assert req.status_code == 200
def test_add_rules_without_policy_id():
client = utilities.register_client()
req, rules = add_rules_without_policy_id(client)
assert req.status_code == 400
assert json.loads(req.data)["message"] == "400: Policy Unknown"
#
# def test_add_rules_without_meta_rule_id():
# policy_id = utilities.get_policy_id()
# client = utilities.register_client()
# req, rules = add_rules_without_meta_rule_id(client, policy_id)
# assert req.status_code == 400
# assert json.loads(req.data)["message"] == "Key: 'meta_rule_id', [Empty String]"
def test_add_rules_without_rule():
policy_id = utilities.get_policy_id()
client = utilities.register_client()
req, rules = add_rules_without_rule(client, policy_id)
assert req.status_code == 400
assert json.loads(req.data)["message"] == 'Invalid Key :rule not found'
def test_delete_rules_with_invalid_parameters():
client = utilities.register_client()
req = delete_rules(client, "", "")
assert req.status_code == 404
# assert json.loads(req.data)["message"] == 'Invalid Key :rule not found'
def test_delete_rules_without_policy_id():
client = utilities.register_client()
subject_category_id, object_category_id, action_category_id, meta_rule_id, policy_id = builder.create_new_policy()
sub_data_id = builder.create_subject_data(policy_id, subject_category_id)
obj_data_id = builder.create_object_data(policy_id, object_category_id)
act_data_id = builder.create_action_data(policy_id, action_category_id)
data = {
"meta_rule_id": meta_rule_id,
"rule": [sub_data_id, obj_data_id, act_data_id],
"instructions": (
{"decision": "grant"},
),
"enabled": True
}
client.post("/policies/{}/rules".format(policy_id), data=json.dumps(data),
headers={'Content-Type': 'application/json'})
req, added_rules = get_rules(client, policy_id)
id = list(added_rules["rules"]["rules"])[0]["id"]
rules = delete_rules(client, None, id)
assert rules.status_code == 200
|