blob: a14d196dcdb0e2b618dda12d9634cdf5b3aca73b [file] [log] [blame]
You Wang2e97a012016-10-21 16:09:52 -07001#!/usr/bin/env python
Suchitra.Vemuri85220062016-10-25 10:44:11 -07002import requests, json, os, sys, time
3#sys.path.append('common-utils')
4sys.path.append(os.path.join(sys.path[0],'utils'))
You Wang2e97a012016-10-21 16:09:52 -07005from readProperties import readProperties
6
Suchitra.Vemuri85220062016-10-25 10:44:11 -07007class restApi(object):
You Wang2e97a012016-10-21 16:09:52 -07008 '''
9 Functions for testing CORD API with POST, GET, PUT, DELETE method
10 '''
11 def __init__(self):
You Wangd4dacd52017-02-16 10:58:53 -080012 self.rp = readProperties(os.path.abspath(os.path.dirname(__file__))+"/../Properties/RestApiProperties.py")
You Wang2e97a012016-10-21 16:09:52 -070013 self.controllerIP = self.getValueFromProperties("SERVER_IP")
14 self.controllerPort = self.getValueFromProperties("SERVER_PORT")
15 self.user = self.getValueFromProperties("USER")
16 self.password = self.getValueFromProperties("PASSWD")
17 self.jsonHeader = {'Content-Type': 'application/json'}
18
19 def getValueFromProperties(self, key):
20 '''
21 Get and return values from properties file
22 '''
23 rawValue = self.rp.getValueProperties(key)
24 value = rawValue.replace("'","")
25 return value
26
27 def getURL(self, key):
28 '''
29 Get REST API suffix from key and return the full URL
30 '''
31 urlSuffix = self.getValueFromProperties(key)
32 url = "http://" + self.controllerIP + ":" + self.controllerPort + urlSuffix
33 return url
34
35 def checkResult(self, resp, expectedStatus):
36 '''
37 Check if the status code in resp equals to the expected number.
38 Return True or False based on the check result.
39 '''
40 if resp.status_code == expectedStatus:
41 print "Test passed: " + str(resp.status_code) + ": " + resp.text
42 return True
43 else:
44 print "Test failed: " + str(resp.status_code) + ": " + resp.text
45 return False
Suchitra.Vemuri85220062016-10-25 10:44:11 -070046 '''
47 @method getAccountNum
48 @Returns AccountNumber for the subscriber
49 @params: jsonData is Dictionary
50 '''
51 def getAccountNum(self, jsonData):
52 print type(str(jsonData['identity']['account_num']))
53 return jsonData['identity']['account_num']
You Wang2e97a012016-10-21 16:09:52 -070054
Suchitra.Vemuri85220062016-10-25 10:44:11 -070055 def getSubscriberId(self, jsonDataList, accountNum):
You Wang2e97a012016-10-21 16:09:52 -070056 '''
57 Search in each json data in the given list to find and return the
58 subscriber id that corresponds to the given account number.
59 '''
60 # Here we assume subscriber id starts from 1
61 subscriberId = 0
62 try:
63 for jsonData in jsonDataList:
64 if jsonData["identity"]["account_num"] == str(accountNum):
65 subscriberId = jsonData["id"]
66 break
Suchitra.Vemuri85220062016-10-25 10:44:11 -070067 return str(subscriberId)
You Wang2e97a012016-10-21 16:09:52 -070068 except KeyError:
69 print "Something wrong with the json data provided: ", jsonData
70 return -1
Suchitra.Vemuri85220062016-10-25 10:44:11 -070071 '''
72 Retrieve the correct jsonDict from the List of json objects returned
73 from Get Reponse
74 Account Number is the one used to post "Data"
75 '''
76 def getJsonDictOfAcctNum(self, getResponseList, AccountNum):
77 getJsonDict = {}
78 try:
79 for data in getResponseList:
80 if data['identity']['account_num'] == AccountNum:
81 getJsonDict = data
82 break
83 return getJsonDict
84 except KeyError:
85 print "Could not find the related account number in Get Resonse Data"
86 return -1
You Wang2e97a012016-10-21 16:09:52 -070087
88 def ApiPost(self, key, jsonData):
89 url = self.getURL(key)
90 data = json.dumps(jsonData)
Suchitra.Vemuri32e03c22016-11-03 11:57:53 -070091 print "url, data..", url, data
You Wang2e97a012016-10-21 16:09:52 -070092 resp = requests.post(url, data=data, headers=self.jsonHeader, auth=(self.user, self.password))
Suchitra Vemurif7410a92017-05-16 17:04:05 -070093 print "requests.codes.....",requests.codes.created
94 passed = self.checkResult(resp, requests.codes.created) or self.checkResult(resp, requests.codes.ok)
You Wang2e97a012016-10-21 16:09:52 -070095 return passed
96
97 def ApiGet(self, key, urlSuffix=""):
Suchitra.Vemuri32e03c22016-11-03 11:57:53 -070098 url = self.getURL(key) + str(urlSuffix)
Suchitra Vemurif7410a92017-05-16 17:04:05 -070099 print "get url...",url
100 resp = requests.get(url, auth=(self.user, self.password))
101 passed = self.checkResult(resp, requests.codes.ok)
102 if not passed:
103 return None
104 else:
105 return resp.json()
106
107 def ApiChameleonGet(self, key, urlSuffix=""):
108 url = self.getURL(key) + "/" + str(urlSuffix)
109 print "get url...",url
You Wang2e97a012016-10-21 16:09:52 -0700110 resp = requests.get(url, auth=(self.user, self.password))
111 passed = self.checkResult(resp, requests.codes.ok)
112 if not passed:
113 return None
114 else:
115 return resp.json()
116
117 def ApiPut(self, key, jsonData, urlSuffix=""):
Suchitra.Vemuri32e03c22016-11-03 11:57:53 -0700118 print "urlSuffix....",type(urlSuffix)
119 url = self.getURL(key) + str(urlSuffix) + "/"
You Wang2e97a012016-10-21 16:09:52 -0700120 data = json.dumps(jsonData)
121 resp = requests.put(url, data=data, headers=self.jsonHeader, auth=(self.user, self.password))
122 passed = self.checkResult(resp, requests.codes.ok)
123 return passed
124
Suchitra Vemurif7410a92017-05-16 17:04:05 -0700125 def ApiChameleonPut(self, key, jsonData, urlSuffix=""):
126 print "urlSuffix....",type(urlSuffix)
127 url = self.getURL(key) + "/" + str(urlSuffix)
128 print "url", url
129 data = json.dumps(jsonData)
130 resp = requests.put(url, data=data, headers=self.jsonHeader, auth=(self.user, self.password))
131 passed = self.checkResult(resp, requests.codes.ok)
132 return passed
133
You Wang2e97a012016-10-21 16:09:52 -0700134 def ApiDelete(self, key, urlSuffix=""):
Suchitra.Vemuri32e03c22016-11-03 11:57:53 -0700135 url = self.getURL(key) + str(urlSuffix)
Suchitra.Vemuri8be18802016-11-16 16:59:54 -0800136 print "url",url
You Wang2e97a012016-10-21 16:09:52 -0700137 resp = requests.delete(url, auth=(self.user, self.password))
Suchitra Vemurif7410a92017-05-16 17:04:05 -0700138 #passed = self.checkResult(resp, requests.codes.no_content)
139 passed = self.checkResult(resp, requests.codes.created) or self.checkResult(resp, requests.codes.ok)
140 return passed
141
142 def ApiChameleonDelete(self, key, urlSuffix=""):
143 url = self.getURL(key) + "/" + str(urlSuffix)
144 print "url",url
145 resp = requests.delete(url, auth=(self.user, self.password))
146 #passed = self.checkResult(resp, requests.codes.no_content)
147 passed = self.checkResult(resp, requests.codes.created) or self.checkResult(resp, requests.codes.ok)
You Wang2e97a012016-10-21 16:09:52 -0700148 return passed
149
Suchitra.Vemuri85220062016-10-25 10:44:11 -0700150#test
151'''
You Wang2e97a012016-10-21 16:09:52 -0700152if __name__ == '__main__':
153 test = RestApi()
154 key = "TENANT_SUBSCRIBER"
155 account_num = 5
156 result = test.ApiPost(key, {"identity":{"account_num":str(account_num)}})
157 time.sleep(5)
158 result = test.ApiGet(key)
159 subId = test.getSubscriberIdFromAccountNum(result, account_num)
160 urlSuffix = str(subId) + "/"
161 time.sleep(5)
162 result = test.ApiPut(key, {"identity":{"name":"My House 2"}}, urlSuffix)
163 time.sleep(5)
164 result = test.ApiDelete(key, urlSuffix)
Suchitra.Vemuri85220062016-10-25 10:44:11 -0700165'''
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800166'''
Suchitra.Vemuri85220062016-10-25 10:44:11 -0700167test = restApi()
Suchitra.Vemuri8be18802016-11-16 16:59:54 -0800168#key = "UTILS_SYNCHRONIZER"
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800169#key = "CORE_USERS"
170#key2 = "UTILS_LOGIN"
Suchitra.Vemuri8be18802016-11-16 16:59:54 -0800171#key = "TENANT_SUBSCRIBER"
172#jsonGetData = test.ApiGet(key)
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800173#jsonResponse = test.ApiPost(key,{"identity":{"name":"My House 22"}})
174#jsonResponse = test.ApiPost(key,{"firstname":"Test002","lastname":"User002","email":"test002@onlab.us","password":"TestUser002","site": "http://localhost:8000/api/core/sites/1/"})
Suchitra Vemurif7410a92017-05-16 17:04:05 -0700175key = "VOLT_TENANT"
176key = "VOLT_SUBSCRIBER"
177#jsonResponse = test.ApiDelete(key,204)
Suchitra.Vemuri8be18802016-11-16 16:59:54 -0800178#jsonResponse = test.ApiPut(key,{"firstname":"Test002","lastname":"User002","email":"test002update@onlab.us","password":"TestUser002","site": "http://localhost:8000/api/core/sites/1/"},14)
179#jsonResponse = test.ApiPost(key2,{"username":"test002update@onlab.us","password":"TestUser002"})
180#jsonResponse = test.ApiPost(key2,{"username":"padmin@vicci.org","password":"letmein"})
181#jsonResponse = test.ApiPut(key,{"username":"testuser","password":"TestUser001"},"9")
Suchitra Vemurif7410a92017-05-16 17:04:05 -0700182#key = "CORE_INSTANCES"
183#key1 = "CORE_SANITY_SLICES"
184#key2 = "CORE_SLICES"
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800185#input_dict = { "s_tag" : "111", "c_tag" : "222", "subscriber" : 23}
Suchitra.Vemuri75dffd42016-12-20 15:35:25 -0800186input_dict = {
Suchitra Vemurif7410a92017-05-16 17:04:05 -0700187 "s_tag" : 117,
188 "c_tag" : 227
189 }
190
191#input_dict1 = { "name" : "mysite_Test1", "site" : 1 , "creator" : 1}
192input_dict2 = {
193
194 "cdn_enable": "true",
195 "uplink_speed": 1000000000,
196 "downlink_speed": 1000000000,
197 "enable_uverse": "true",
198 "status": "enabled",
199 "service_specific_id": "100",
200 "name": "My House"
201 }
202#jsonResponse = test.ApiPost(key,input_dict)
203#jsonResponse = test.ApiChameleonPut(key,input_dict,12)
204#jsonGetData = test.ApiGet(key,"/12")
205#print "========="
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800206#print jsonGetData
Suchitra.Vemuri75dffd42016-12-20 15:35:25 -0800207#jsonEdit = test.ApiPut(key,{"c_tag" : "666","s_tag" : "123"},"30")
Suchitra Vemurif7410a92017-05-16 17:04:05 -0700208jsonO = test.ApiDelete(key,"/7")
Suchitra.Vemuri32e03c22016-11-03 11:57:53 -0700209#jsonResponse = test.ApiPut(key,{"identity":{"name":"My House 22"}},"71")
210#jsonResponse = test.ApiPost(key,{"name":"test-2"})
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800211#jsonResponse = test.ApiPut(key,{"name":"test1-changed"},"9")
Suchitra.Vemuri85220062016-10-25 10:44:11 -0700212print "========="
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800213'''