- # 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("/a1-p/policies/admission_control_policy", 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("/a1-p/policies/admission_control_policy", 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("/a1-p/policies/admission_control_policy", 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("/a1-p/policies/admission_control_policy", 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("/a1-p/policies/admission_control_policy", 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_bad_send(client, monkeypatch):
- """
- Test bad send failures
- """
- testing_helpers.patch_all(monkeypatch)
+ res = client.put(ADM_CTRL_INSTANCE, json=adm_instance_good)
+ assert res.status_code == 202
+
+ # instance 200 and in list
+ res = client.get(ADM_CTRL_POLICIES)
+ assert res.status_code == 200
+ assert res.json == [ADM_CTRL]
+
+ def get_instance_good(expected):
+ # get the instance
+ res = client.get(ADM_CTRL_INSTANCE)
+ assert res.status_code == 200
+ assert res.json == adm_instance_good
+
+ # get the instance status
+ res = client.get(ADM_CTRL_INSTANCE_STATUS)
+ assert res.status_code == 200
+ assert res.get_data(as_text=True) == expected
+
+ # try a status get but pretend we didn't get any ACKs yet to test NOT IN EFFECT
+ monkeypatch.setattr("a1.a1rmr.dequeue_all_waiting_messages", _fake_dequeue_none)
+ get_instance_good("NOT IN EFFECT")
+
+ # now pretend we did get a good ACK
+ monkeypatch.setattr("a1.a1rmr.dequeue_all_waiting_messages", _fake_dequeue)
+ get_instance_good("IN EFFECT")
+
+ # delete it
+ res = client.delete(ADM_CTRL_INSTANCE)
+ assert res.status_code == 202
+ res = client.delete(ADM_CTRL_INSTANCE) # should be able to do multiple deletes
+ assert res.status_code == 202
+
+ # status after a delete, but there are no messages yet, should still return
+ monkeypatch.setattr("a1.a1rmr.dequeue_all_waiting_messages", _fake_dequeue)
+ get_instance_good("IN EFFECT")
+
+ # now pretend we deleted successfully
+ monkeypatch.setattr("a1.a1rmr.dequeue_all_waiting_messages", _fake_dequeue_deleted)
+ res = client.get(ADM_CTRL_INSTANCE_STATUS) # cant get status
+ assert res.status_code == 404
+ res = client.get(ADM_CTRL_INSTANCE) # cant get instance
+ assert res.status_code == 404
+ # list still 200 but no instance
+ res = client.get(ADM_CTRL_POLICIES)
+ assert res.status_code == 200
+ assert res.json == []