Add second work package for REST API implementation
[anna.git] / example / diameter / launcher / resources / rest_api / ct / flow-operations / sendhex_test.py
1 import pytest
2
3 def test_001_given_diameter_hex_representation_i_want_to_send_message_to_diameter_entity_and_check_it_fails_for_auto_node(resources, admlc):
4
5   responseBodyRef = { "success":"true", "response":"Working node has been set to automatic" }
6
7   # Send POST
8   response = admlc.post("/node-auto")
9
10   # Verify response
11   admlc.assert_response__status_body_headers(response, 200, responseBodyRef)
12
13   diameterHex = resources("aar.hex")
14   #requestBody = resources("aaa-diameterHex.json.in", diameterHex=diameterHex.rstrip())
15   requestBodyDict = { "diameterHex":"{}".format(diameterHex.rstrip()) }
16
17   responseBodyRef = { "success":"false", "response":"Internal error (check ADML traces): invalid operated host" }
18
19   # Send POST
20   response = admlc.postDict("/sendhex2e", requestBodyDict)
21
22   # Verify response
23   admlc.assert_response__status_body_headers(response, 200, responseBodyRef)
24
25   # IT FAILS BECAUSE MESSAGE SENT HAS OCS3 AS ORIGIN HOST, AND THIS IS NOT REGISTERED, SO node-auto COULD NOT DEDUCE THE CORRECT RESOURCE
26
27 @pytest.mark.xfail(reason="Server must receive client connection to be available. Component test is very fast and this could fail the first time. Wait and test again. TODO: wait for available status after 'services' loading.")
28 def test_002_given_diameter_hex_representation_i_want_to_send_message_to_diameter_entity_and_check_it_succeed_for_correct_node(resources, admlc):
29
30   requestBody = { "name":"afHost.afRealm.com" }
31   responseBodyRef = { "success":"true", "response":"Forced node is now 'afHost.afRealm.com'" }
32
33   # Send POST
34   response = admlc.postDict("/node", requestBody)
35
36   # Verify response
37   admlc.assert_response__status_body_headers(response, 200, responseBodyRef)
38
39   diameterHex = resources("aar.hex")
40   #requestBody = resources("aaa-diameterHex.json.in", diameterHex=diameterHex.rstrip())
41   requestBodyDict = { "diameterHex":"{}".format(diameterHex.rstrip()) }
42
43   responseBodyRef = { "success":"true", "response":"Operation processed" }
44
45   # Send POST
46   response = admlc.postDict("/sendhex2e", requestBodyDict)
47
48   # Verify response
49   admlc.assert_response__status_body_headers(response, 200, responseBodyRef)
50
51 @pytest.mark.xfail(reason="Server must receive client connection to be available. Component test is very fast and this could fail the first time. Wait and test again. TODO: wait for available status after 'services' loading.")
52 def test_003_given_diameter_hex_representation_i_want_to_send_message_to_diameter_client_and_check_it_succeed_for_correct_node(resources, admlc):
53
54 #  # WE HAVE TO CONFIGURE THE CLIENT AS OPERATED HOST, BECAUSE HEX SENDING PROCEDURE IS NOT GOING TO UPDATE OPERATED HOST WITH CODEC:
55 #  requestBody = { "name":"afHost.afRealm.com" }
56 #  responseBodyRef = { "success":"true", "response":"Forced node is now 'afHost.afRealm.com'" }
57   requestBody = { "name":"ownHostId.operatorRealm.com" }
58   responseBodyRef = { "success":"true", "response":"Forced node is now 'ownHostId.operatorRealm.com'" }
59
60   # Send POST
61   response = admlc.postDict("/node", requestBody)
62
63   # Verify response
64   admlc.assert_response__status_body_headers(response, 200, responseBodyRef)
65
66   # NORMALLY, AAR IS NOT THE KIND OF MESSAGE TO SEND AS DIAMETER SERVER BUT RAR, etc, BUT THIS IS VALID FOR OUR TESTING
67
68   # We will use a message which origin-host and destination-host fits the real configured ones in services, and also is ready
69   #  to be sent from local diameter server to the client:
70   diameterHex = resources("aarFromOwnToAF.hex")
71   #requestBody = resources("aaa-diameterHex.json.in", diameterHex=diameterHex.rstrip())
72   requestBodyDict = { "diameterHex":"{}".format(diameterHex.rstrip()) }
73
74   responseBodyRef = { "success":"true", "response":"Operation processed" }
75
76   # Send POST
77   response = admlc.postDict("/sendhex2c", requestBodyDict)
78
79   # Verify response
80   admlc.assert_response__status_body_headers(response, 200, responseBodyRef)
81