blob: 5c22097dc3a03eb8f975d8dca0db0defa40cdd45 [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 Wang74419732017-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))
93 passed = self.checkResult(resp, requests.codes.created)
94 return passed
95
96 def ApiGet(self, key, urlSuffix=""):
Suchitra.Vemuri32e03c22016-11-03 11:57:53 -070097 url = self.getURL(key) + str(urlSuffix)
You Wang2e97a012016-10-21 16:09:52 -070098 resp = requests.get(url, auth=(self.user, self.password))
99 passed = self.checkResult(resp, requests.codes.ok)
100 if not passed:
101 return None
102 else:
103 return resp.json()
104
105 def ApiPut(self, key, jsonData, urlSuffix=""):
Suchitra.Vemuri32e03c22016-11-03 11:57:53 -0700106 print "urlSuffix....",type(urlSuffix)
107 url = self.getURL(key) + str(urlSuffix) + "/"
You Wang2e97a012016-10-21 16:09:52 -0700108 data = json.dumps(jsonData)
109 resp = requests.put(url, data=data, headers=self.jsonHeader, auth=(self.user, self.password))
110 passed = self.checkResult(resp, requests.codes.ok)
111 return passed
112
113 def ApiDelete(self, key, urlSuffix=""):
Suchitra.Vemuri32e03c22016-11-03 11:57:53 -0700114 url = self.getURL(key) + str(urlSuffix)
Suchitra.Vemuri8be18802016-11-16 16:59:54 -0800115 print "url",url
You Wang2e97a012016-10-21 16:09:52 -0700116 resp = requests.delete(url, auth=(self.user, self.password))
117 passed = self.checkResult(resp, requests.codes.no_content)
118 return passed
119
Suchitra.Vemuri85220062016-10-25 10:44:11 -0700120#test
121'''
You Wang2e97a012016-10-21 16:09:52 -0700122if __name__ == '__main__':
123 test = RestApi()
124 key = "TENANT_SUBSCRIBER"
125 account_num = 5
126 result = test.ApiPost(key, {"identity":{"account_num":str(account_num)}})
127 time.sleep(5)
128 result = test.ApiGet(key)
129 subId = test.getSubscriberIdFromAccountNum(result, account_num)
130 urlSuffix = str(subId) + "/"
131 time.sleep(5)
132 result = test.ApiPut(key, {"identity":{"name":"My House 2"}}, urlSuffix)
133 time.sleep(5)
134 result = test.ApiDelete(key, urlSuffix)
Suchitra.Vemuri85220062016-10-25 10:44:11 -0700135'''
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800136'''
Suchitra.Vemuri85220062016-10-25 10:44:11 -0700137test = restApi()
Suchitra.Vemuri8be18802016-11-16 16:59:54 -0800138#key = "UTILS_SYNCHRONIZER"
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800139#key = "CORE_USERS"
140#key2 = "UTILS_LOGIN"
Suchitra.Vemuri8be18802016-11-16 16:59:54 -0800141#key = "TENANT_SUBSCRIBER"
142#jsonGetData = test.ApiGet(key)
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800143#jsonResponse = test.ApiPost(key,{"identity":{"name":"My House 22"}})
144#jsonResponse = test.ApiPost(key,{"firstname":"Test002","lastname":"User002","email":"test002@onlab.us","password":"TestUser002","site": "http://localhost:8000/api/core/sites/1/"})
Suchitra.Vemuri8be18802016-11-16 16:59:54 -0800145#jsonResponse = test.ApiDelete(key,15)
146#jsonResponse = test.ApiPut(key,{"firstname":"Test002","lastname":"User002","email":"test002update@onlab.us","password":"TestUser002","site": "http://localhost:8000/api/core/sites/1/"},14)
147#jsonResponse = test.ApiPost(key2,{"username":"test002update@onlab.us","password":"TestUser002"})
148#jsonResponse = test.ApiPost(key2,{"username":"padmin@vicci.org","password":"letmein"})
149#jsonResponse = test.ApiPut(key,{"username":"testuser","password":"TestUser001"},"9")
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800150#key = "UTILS_SYNCHRONIZER"
Suchitra.Vemuri75dffd42016-12-20 15:35:25 -0800151key = "CORE_SANITY_INSTANCES"
152key1 = "CORE_SANITY_SLICES"
153key2 = "CORE_SLICES"
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800154#input_dict = { "s_tag" : "111", "c_tag" : "222", "subscriber" : 23}
Suchitra.Vemuri75dffd42016-12-20 15:35:25 -0800155input_dict = {
156 "name": "test-instance",
157 "image": 1,
158 "slice": 1,
159 "deployment": 1,
160 "node": 1
161 }
162input_dict1 = { "name" : "mysite_Test1", "site" : 1 , "creator" : 1}
163jsonResponse = test.ApiPost(key1,input_dict1)
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800164#jsonGetData = test.ApiGet(key)
165print "========="
166#print jsonGetData
Suchitra.Vemuri75dffd42016-12-20 15:35:25 -0800167#jsonEdit = test.ApiPut(key,{"c_tag" : "666","s_tag" : "123"},"30")
168#jsonO = test.ApiDelete(key2,"1")
Suchitra.Vemuri32e03c22016-11-03 11:57:53 -0700169#jsonResponse = test.ApiPut(key,{"identity":{"name":"My House 22"}},"71")
170#jsonResponse = test.ApiPost(key,{"name":"test-2"})
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800171#jsonResponse = test.ApiPut(key,{"name":"test1-changed"},"9")
Suchitra.Vemuri85220062016-10-25 10:44:11 -0700172print "========="
Suchitra.Vemurid2035342016-11-22 17:44:40 -0800173'''