blob: 19e454455be6785bc4f6856bb26f1ecfccaf946c [file] [log] [blame]
Kailash Khalasi72614802018-05-02 09:21:23 -07001*** Settings ***
2Documentation Setup and Teardown Functionality for XOS API Tests
3Library Collections
4Library String
5Library OperatingSystem
6Library XML
7Library RequestsLibrary
8Library HttpLibrary.HTTP
9Library ../Framework/utils/utils.py
10Library ../Framework/restApi.py
11Variables ../Properties/RestApiProperties.py
12
13*** Keywords ***
14Verify API Functionality
15 [Arguments] ${type} ${endpoint} ${data}=${EMPTY} ${data_id}=${EMPTY} ${key}=${EMPTY}
16 Run Keyword If "${type}" == "RETRIEVE" CORD Get ${endpoint} ${data_id} ${data} ${key}
17 Run Keyword If "${type}" == "CREATE" CORD Post ${endpoint} ${data}
18 Run Keyword If "${type}" == "UPDATE" CORD Put ${endpoint} ${data} ${data_id}
19 Run Keyword If "${type}" == "DELETE" CORD Delete ${endpoint} ${data_id}
20
21CORD Get
22 [Documentation] Make a GET call to the CORD controller
23 [Arguments] ${service} ${id} ${value} ${key}
24 ${resp}= Get Request ${SERVER_IP} ${service}/${id}
25 Log ${resp.content}
26 Should Be Equal As Strings ${resp.status_code} 200
27 ${updated_value}= Run Keyword If '${key}' != 'null' Get Json Value ${resp.content} /${key}
28 ${updated_value}= Run Keyword If '${key}' != 'null' Remove String ${updated_value} "
29 Run Keyword If '${key}' != 'null' Should Contain "${value}" ${updated_value}
30 [Return] ${resp}
31
32CORD Post
33 [Documentation] Make a POST call to the CORD controller
34 [Arguments] ${service} ${data}
35 ${data}= Evaluate json.dumps(${data}) json
36 ${resp}= Post Request ${SERVER_IP} uri=${service} data=${data}
37 Log ${resp.content}
38 Should Be Equal As Strings ${resp.status_code} 200
39 ${id}= Get Json Value ${resp.content} /id
40 Set Suite Variable ${id}
41 [Return] ${resp}
42
43CORD Put
44 [Documentation] Make a PUT call to the CORD controller
45 [Arguments] ${service} ${data} ${data_id}
46 ${data}= Evaluate json.dumps(${data}) json
47 ${resp}= Put Request ${SERVER_IP} uri=${service}/${data_id} data=${data}
48 Log ${resp.content}
49 Should Be Equal As Strings ${resp.status_code} 200
50 ${id}= Get Json Value ${resp.content} /id
51 Set Suite Variable ${id}
52 [Return] ${resp}
53
54CORD Delete
55 [Documentation] Make a DELETE call to the CORD controller
56 [Arguments] ${service} ${data_id}
57 ${resp}= Delete Request ${SERVER_IP} uri=${service}/${data_id}
58 Log ${resp.content}
59 Should Be Equal As Strings ${resp.status_code} 200
60 [Return] ${resp}
61
62Generate JSON Data
63 {% for m in proto.messages %}
64 {%- if m.name not in ['XOSBase'] -%}
65 {% autoescape false %}
66 {% endautoescape %}
67 ${json_{{ m.name | lower }}_1}= Set Variable { }
68 ${json_{{ m.name | lower }}_updated_1}= Set Variable { }
69 ${json_{{ m.name | lower}}_updated_key}= Set Variable null
70 Set Suite Variable ${json_{{ m.name | lower}}_updated_key}
71 # set required fields for {{ m.name | lower }} object
72 {% for f in m.fields + xproto_base_fields(m, proto.message_table) -%}
73 {% if f.modifier == "required" -%}
74 {% if f.options.blank == "False" -%}
75 {% if not f.options.default -%}
76 {% if f.link -%}
77 ${tmp_{{ f.options.model | lower }}_id}= Create {{ f.options.model }}
78 ${json_{{ m.name | lower }}_1}= Set Json Value ${json_{{ m.name | lower }}_1} /{{ f.name }}_id ${tmp_{{ f.options.model | lower }}_id}
79 {% else -%}
80 ${json_{{ m.name | lower}}_{{ f.name }}_1}= Generate Random Value {{ f.type }}
81 ${json_{{ m.name | lower }}_1}= Set Json Value ${json_{{ m.name | lower }}_1} /{{ f.name }} "${json_{{ m.name | lower }}_{{ f.name }}_1}"
82 {% if loop.index0 == 0 -%}
83 ${json_{{ m.name | lower}}_updated_key}= Set Variable {{ f.name }}
84 ${json_{{ m.name | lower}}_{{ f.name }}_updated_1}= Generate Random Value {{ f.type }}
85 ${json_{{ m.name | lower }}_updated_1}= Set Json Value ${json_{{ m.name | lower }}_updated__1} /{{ f.name }} "${json_{{ m.name | lower }}_{{ f.name }}_updated_1}"
86 {% endif -%}
87 {% endif -%}
88 {% endif -%}
89 {% endif -%}
90 {% endif -%}
91 {% endfor -%}
Kailash Khalasifc74e1c2018-08-10 10:50:40 -070092 {% if m.name == "User" and f.name == "email" -%}
93 ${json_user_email_tmp}= Generate Random Value {{ f.type }}
94 ${json_user_email_tmp}= Catenate SEPARATOR= ${json_user_email_tmp} @opencord.org
95 ${json_user_1}= Set Json Value ${json_user_1} /email "${json_user_email_tmp}"
96 {% endif -%}
Kailash Khalasi72614802018-05-02 09:21:23 -070097 {% if m.name == "Site" -%}
98 ${json_{{ m.name | lower}}_login_base_tmp}= Set Variable testloginbase
99 ${json_{{ m.name | lower}}_1}= Set Json Value ${json_{{ m.name | lower }}_1} /login_base "${json_{{ m.name | lower }}_login_base_tmp}"
100 {% endif -%}
101 {% if m.name == "Slice" -%}
102 ${json_{{ m.name | lower}}_name}= Generate Random Slice Name
103 ${json_{{ m.name | lower}}_1}= Set Json Value ${json_{{ m.name | lower }}_1} /name "${json_{{ m.name | lower }}_name}"
104 ${json_{{ m.name | lower}}_name_updated_1}= Generate Random Slice Name
105 ${json_{{ m.name | lower}}_updated_1}= Set Json Value ${json_{{ m.name | lower }}_updated_1} /name "${json_{{ m.name | lower}}_name_updated_1}"
106 {% endif -%}
Kailash Khalasidb41afa2018-07-05 15:16:02 -0700107 {% if m.name == "ProgranServiceInstance" -%}
108 ${json_{{ m.name | lower}}_name}= Generate Random Value string
109 ${json_{{ m.name | lower}}_1}= Set Json Value ${json_{{ m.name | lower }}_1} /name "${json_{{ m.name | lower }}_name}"
Kailash Khalasi19e57202018-07-13 10:21:41 -0700110 ${json_{{ m.name | lower}}_1}= Set Json Value ${json_{{ m.name | lower }}_1} /CellIndividualOffset "1"
Kailash Khalasidb41afa2018-07-05 15:16:02 -0700111 ${json_{{ m.name | lower}}_name_updated_1}= Generate Random Value string
112 ${json_{{ m.name | lower}}_updated_1}= Set Json Value ${json_{{ m.name | lower }}_updated_1} /name "${json_{{ m.name | lower}}_name_updated_1}"
Kailash Khalasi19e57202018-07-13 10:21:41 -0700113 ${json_{{ m.name | lower}}_updated_1}= Set Json Value ${json_{{ m.name | lower }}_updated_1} /CellIndividualOffset "1"
Kailash Khalasidb41afa2018-07-05 15:16:02 -0700114 {% endif %}
Kailash Khalasi62ab4032018-07-09 14:01:21 -0700115 {% if m.name == "RCORDSubscriber" -%}
Kailash Khalasiad9acf52018-07-12 10:06:06 -0700116 ## Create req objects for subscriber (voltservice -> oltdevice -> ponport -> onudevice)
117 CORD Post /xosapi/v1/volt/voltservices {"name": "testvoltservice123"}
118 CORD Post /xosapi/v1/volt/oltdevices {"volt_service_id": ${id}, "uplink": "testoltdevice123"}
Kailash Khalasi2e0e3e12018-07-30 08:23:04 -0700119 CORD Post /xosapi/v1/volt/ponports {"olt_device_id": ${id}, "port_no": "123", "name": "testponport123"}
Kailash Khalasi62ab4032018-07-09 14:01:21 -0700120 ${json_{{ m.name | lower}}_onudevice}= Set Variable onudevice123
121 ${json_{{ m.name | lower}}_1}= Set Json Value ${json_{{ m.name | lower }}_1} /onu_device "${json_{{ m.name | lower}}_onudevice}"
Kailash Khalasiad9acf52018-07-12 10:06:06 -0700122 CORD Post /xosapi/v1/volt/onudevices {"serial_number": "onudevice123", "pon_port_id": ${id}, "vendor": "abcdefg"}
Kailash Khalasi62ab4032018-07-09 14:01:21 -0700123 {% endif %}
Kailash Khalasi56bbde22018-07-24 13:52:34 -0700124 {% if m.name == "HippieOSSServiceInstance" -%}
125 ## Create req service owner for hippie oss service instance
126 CORD Post /xosapi/v1/hippie-oss/hippieossservices {"name": "testhippieservice"}
127 ${json_{{ m.name | lower}}_1}= Set Json Value ${json_{{ m.name | lower }}_1} /owner_id ${id}
128 {% endif %}
Kailash Khalasi72614802018-05-02 09:21:23 -0700129 ${json_{{ m.name | lower }}_1}= To JSON ${json_{{ m.name | lower }}_1}
130 ${json_{{ m.name | lower }}_updated_1}= To JSON ${json_{{ m.name | lower }}_updated_1}
131 Set Suite Variable ${json_{{ m.name | lower }}_1}
132 Set Suite Variable ${json_{{ m.name | lower }}_updated_1}
133 {% endif -%}
134 {% endfor %}
135
136{% for m in proto.messages %}
137{%- if m.name not in ['XOSBase'] -%}
138Create {{ m.name }}
139 ##Creating {{ m.name | lower }} object
140 ${json_{{ m.name | lower }}_tmp}= Set Variable { }
141 # set required fields for {{ m.name | lower }} object
142 {% for f in m.fields + xproto_base_fields(m, proto.message_table) -%}
143 {% if f.link -%}
144 {% if f.modifier == "required" -%}
145 {% if f.options.blank == "False" -%}
146 # create dependent {{ f.options.model }}
147 ${dependent_{{ f.options.model | lower }}_id}= Create {{ f.options.model }}
148 ${json_{{ m.name | lower}}_tmp}= Set Json Value ${json_{{ m.name | lower }}_tmp} /{{ f.name }}_id ${dependent_{{ f.options.model | lower }}_id}
149 {% endif -%}
150 {% endif -%}
151 {% else -%}
152 {% if f.modifier == "required" -%}
153 {% if f.options.blank == "False" -%}
154 {% if not f.options.default -%}
Kailash Khalasifc74e1c2018-08-10 10:50:40 -0700155 {% if m.name == "User" and f.name == "email" -%}
156 ${json_user_email_tmp}= Generate Random Value {{ f.type }}
157 ${json_user_email_tmp}= Catenate SEPARATOR= ${json_user_email_tmp} @opencord.org
158 ${json_user_tmp}= Set Json Value ${json_user_tmp} /email "${json_user_email_tmp}"
159 {% else -%}
Kailash Khalasi72614802018-05-02 09:21:23 -0700160 ${json_{{ m.name | lower}}_{{ f.name }}_tmp}= Generate Random Value {{ f.type }}
161 ${json_{{ m.name | lower}}_tmp}= Set Json Value ${json_{{ m.name | lower }}_tmp} /{{ f.name }} "${json_{{ m.name | lower}}_{{ f.name }}_tmp}"
162 {% endif -%}
163 {% endif -%}
164 {% endif -%}
165 {% endif -%}
Kailash Khalasifc74e1c2018-08-10 10:50:40 -0700166 {% endif -%}
Kailash Khalasi72614802018-05-02 09:21:23 -0700167 {% endfor -%}
168 {% if m.name == "Site" -%}
169 ${json_{{ m.name | lower}}_login_base_tmp}= Set Variable testloginbase
170 ${json_{{ m.name | lower}}_tmp}= Set Json Value ${json_{{ m.name | lower }}_tmp} /login_base "${json_{{ m.name | lower }}_login_base_tmp}"
171 {% endif -%}
172 {% if m.name == "Slice" -%}
173 ${json_{{ m.name | lower}}_name}= Generate Random Slice Name
174 ${json_{{ m.name | lower}}_tmp}= Set Json Value ${json_{{ m.name | lower }}_tmp} /name "${json_{{ m.name | lower }}_name}"
175 {% endif -%}
176 {% if m.name == "Network" -%}
177 ${json_{{ m.name | lower}}_tmp}= Set Json Value ${json_{{ m.name | lower }}_tmp} /permit_all_slices true
178 {% endif -%}
179 ${json_{{ m.name | lower }}_tmp}= To JSON ${json_{{ m.name | lower }}_tmp}
Kailash Khalasi9302c182018-05-07 13:46:15 -0600180 ${resp}= CORD Post /xosapi/v1/{{ xproto_unquote(m.options.app_label) }}/{{ xproto_pluralize(m) | lower}} ${json_{{ m.name | lower }}_tmp}
Kailash Khalasi72614802018-05-02 09:21:23 -0700181 ${id_{{ m.name | lower }}_tmp}= Get Json Value ${resp.content} /id
182 Append To List ${dependent_{{ m.name | lower }}_ids} ${id_{{ m.name | lower }}_tmp}
183 [Return] ${id_{{ m.name | lower }}_tmp}
184{% endif -%}
185{% endfor -%}
186
187Setup Tests
188 [Documentation] Find all dependent objects per model and create them and store them for later use
189 {% for m in proto.messages %}
190 {%- if m.name not in ['XOSBase'] -%}
191 ${model}= Set Variable {{ m.name | lower }}s
192 @{dependent_{{ m.name | lower }}_ids}= Create List ${model}
193 Set Suite Variable @{dependent_{{ m.name | lower }}_ids}
194 {% endif -%}
195 {% endfor -%}
196 @{dependent_models}= Create List
197 Set Suite Variable ${dependent_models}
198 ${auth} = Create List ${XOS_USER} ${XOS_PASSWD}
199 ${HEADERS} Create Dictionary Content-Type=application/json
200 Create Session ${SERVER_IP} http://${SERVER_IP}:${SERVER_PORT} auth=${AUTH} headers=${HEADERS}
201 Generate JSON Data
202
203Teardown Tests
204 [Documentation] Delete all dependent objects created in Setup
205 {% for m in proto.messages %}
206 {%- if m.name not in ['XOSBase'] -%}
207 ${len}= Get Length ${dependent_{{ m.name | lower }}_ids}
208 : FOR ${INDEX} IN RANGE 1 ${len}
209 \ Run Keyword And Ignore Error CORD Delete /xosapi/v1/{{ xproto_unquote(m.options.app_label) }}/${dependent_{{ m.name | lower }}_ids[0]} ${dependent_{{ m.name | lower }}_ids[${INDEX}]}
210 {% endif -%}
211 {% endfor -%}
Kailash Khalasi2e0e3e12018-07-30 08:23:04 -0700212 Delete All Sessions