-def test_xapp_put_bad(client, monkeypatch):
- """Test policy put fails"""
- _test_put_patch(monkeypatch)
- # return from policy handler has a status indicating FAIL
- monkeypatch.setattr(
- "a1.a1rmr._dequeue_all_waiting_messages", _fake_dequeue(monkeypatch, msg_payload={"status": "FAIL", "foo": "bar"})
- )
- res = client.put("/ric/policies/control_admission_time", json=testing_helpers.good_payload())
- assert res.status_code == 502
- assert res.json["reason"] == "BAD STATUS"
- assert res.json["return_payload"] == {"status": "FAIL", "foo": "bar"}
-
- # return from policy handler has no status field
- monkeypatch.setattr("a1.a1rmr._dequeue_all_waiting_messages", _fake_dequeue(monkeypatch, msg_payload={"foo": "bar"}))
- res = client.put("/ric/policies/control_admission_time", json=testing_helpers.good_payload())
- assert res.status_code == 502
- assert res.json["reason"] == "NO STATUS"
- assert res.json["return_payload"] == {"foo": "bar"}
-
- # return from policy handler not a json
- monkeypatch.setattr(
- "a1.a1rmr._dequeue_all_waiting_messages", _fake_dequeue(monkeypatch, msg_payload="booger", jsonb=False)
- )
- res = client.put("/ric/policies/control_admission_time", json=testing_helpers.good_payload())
- assert res.status_code == 502
- assert res.json["reason"] == "NOT JSON"
- assert res.json["return_payload"] == "booger"
-
- # bad type
- monkeypatch.setattr("a1.a1rmr._dequeue_all_waiting_messages", _fake_dequeue(monkeypatch, msg_type=666))
- res = client.put("/ric/policies/control_admission_time", json=testing_helpers.good_payload())
- assert res.status_code == 504
- assert res.data == b"\"A1 was expecting an ACK back but it didn't receive one or didn't recieve the expected ACK\"\n"
-
- # bad state
- monkeypatch.setattr("a1.a1rmr._dequeue_all_waiting_messages", _fake_dequeue(monkeypatch, msg_state=666))
- res = client.put("/ric/policies/control_admission_time", json=testing_helpers.good_payload())
- assert res.status_code == 504
- assert res.data == b"\"A1 was expecting an ACK back but it didn't receive one or didn't recieve the expected ACK\"\n"
-
-
-def test_xapp_put_good(client, monkeypatch):
- """ test policy put good"""
+def _no_ac(client):
+ # no type there yet
+ res = client.get(ADM_CTRL_TYPE)
+ assert res.status_code == 404
+
+ # no types at all
+ res = client.get("/a1-p/policytypes")
+ assert res.status_code == 200
+ assert res.json == []
+
+ # instance 404 because type not there yet
+ res = client.get(ADM_CTRL_POLICIES)
+ assert res.status_code == 404
+
+
+def _put_ac_type(client, typedef):
+ _no_ac(client)
+
+ # put the type
+ res = client.put(ADM_CTRL_TYPE, json=typedef)
+ assert res.status_code == 201
+
+ # cant replace types
+ res = client.put(ADM_CTRL_TYPE, json=typedef)
+ assert res.status_code == 400
+
+ # type there now
+ res = client.get(ADM_CTRL_TYPE)
+ assert res.status_code == 200
+ assert res.json == typedef
+
+ # type in type list
+ res = client.get("/a1-p/policytypes")
+ assert res.status_code == 200
+ assert res.json == [ADM_CRTL_TID]
+
+ # instance 200 but empty list
+ res = client.get(ADM_CTRL_POLICIES)
+ assert res.status_code == 200
+ assert res.json == []
+
+
+def _delete_ac_type(client):
+ res = client.delete(ADM_CTRL_TYPE)
+ assert res.status_code == 204
+
+ # cant get
+ res = client.get(ADM_CTRL_TYPE)
+ assert res.status_code == 404
+
+ # cant invoke delete on it again
+ res = client.delete(ADM_CTRL_TYPE)
+ assert res.status_code == 404
+
+ _no_ac(client)
+
+
+def _put_ac_instance(client, monkeypatch, instancedef):
+ # no instance there yet
+ res = client.get(ADM_CTRL_INSTANCE)
+ assert res.status_code == 404
+ res = client.get(ADM_CTRL_INSTANCE_STATUS)
+ assert res.status_code == 404
+
+ # create a good instance