blob: 4497377e7f43d5e0761c45c1484a082fe5344f86 [file] [log] [blame]
#// Copyright (c) 2000-2017 Ericsson Telecom AB //
#// All rights reserved. This program and the accompanying materials are made available under the terms //
#// of the Eclipse Public License v1.0 which accompanies this distribution, and is available at //
#// http://www.eclipse.org/legal/epl-v10.html //
#/////////////////////////////////////////////////////////////////////////////////////////////////////////
import unittest
from Common.DsRestAPI import DsRestAPI
from utils.MockedHandler import *
# basic requests
INT_REQUEST = {"requests": [{"getData": {"source": "dummy", "element": "int"}}]}
STRING_REQUEST = {"requests": [{"getData": {"source": "dummy", "element": "string"}}]}
LIST_REQUEST = {"requests": [{"getData": {"source": "dummy", "element": "list"}}]}
LIST_WITH_CHILDREN = {"requests": [{"getData": {"source": "dummy", "element": "list", "children": [{"getData": {"source": "dummy", "element": "stringOfList", "params": [{"paramName": "dummyParam", "paramValue": "%Parent0%"}]}}]}}]}
LIST_WITH_SELECTION = {"requests": [{"getData": {"source": "dummy", "element": "list", "selection": [1], "children": [{"getData": {"source": "dummy", "element": "stringOfList", "params": [{"paramName": "dummyParam", "paramValue": "%Parent0%"}]}}]}}]}
NODE_WITH_CHILDREN = {"requests": [{"getData": {"source": "dummy", "element": "int", "children": [{"getData": {"source": "dummy", "element": "string"}}]}}]}
# prefilters
INT_REQUEST_CTRUE = {"requests": [{"getData": {"source": "dummy", "element": "int", "filter": {"dataValue": "true"}}}]}
INT_REQUEST_CFALSE = {"requests": [{"getData": {"source": "dummy", "element": "int", "filter": {"dataValue": "false"}}}]}
INT_REQUEST_TRUE = {"requests": [{"getData": {"source": "dummy", "element": "int", "filter": {"request": {"source": "dummy", "element": "true"}}}}]}
INT_REQUEST_FALSE = {"requests": [{"getData": {"source": "dummy", "element": "int", "filter": {"request": {"source": "dummy", "element": "false"}}}}]}
INT_REQUEST_PARAM_TRUE = {"requests": [{"getData": {"source": "dummy", "element": "int", "filter": {"request": {"source": "dummy", "element": "boolOfParam", "params": [{"paramName": "dummyParam", "paramValue": {"request": {"source": "dummy", "element": "int"}}}]}}}}]}
INT_REQUEST_PARAM_FALSE = {"requests": [{"getData": {"source": "dummy", "element": "int", "filter": {"request": {"source": "dummy", "element": "boolOfParam", "params": [{"paramName": "dummyParam", "paramValue": {"request": {"source": "dummy", "element": "string"}}}]}}}}]}
INT_REQUEST_REMAP_TRUE = {"requests": [{"getData": {"source": "dummy", "element": "int", "filter": {"request": {"source": "dummy", "element": "false", "remapTo": {"request": {"source": "dummy", "element": "true"}}}}}}]}
# postfilter
NODE_REQUEST_PARENT_FALSE = {"requests": [{"getData": {"source": "dummy", "element": "false", "filter": {"dataValue": "%Parent0%"}}}]}
NODE_REQUEST_PARENT_TRUE = {"requests": [{"getData": {"source": "dummy", "element": "true", "filter": {"dataValue": "%Parent0%"}}}]}
LIST_REQUEST_FILTERED = {"requests": [{"getData": {"source": "dummy", "element": "list", "children": [{"getData": {"source": "dummy", "element": "stringOfList", "params": [{"paramName": "dummyParam", "paramValue": "%Parent0%"}]}}], "filter": {"request": {"source": "dummy", "element": "boolOfList", "params": [{"paramName": "dummyParam", "paramValue": {"dataValue": "%Parent0%"}}]}}}}]}
# set requests
INT_REQUEST_SET = {"requests": [{"setData": {"source": "dummy", "element": "int", "tp": 1, "content": "-1"}}]}
LIST_ELEMENT_SET = {"requests": [{"setData": {"source": "dummy", "element": "stringOfList", "tp": 4, "content": "other_string", "params": [{"paramName": "dummyParam", "paramValue": "0"}]}}]}
LIST_SET = {"requests": [{"setData": {"source": "dummy", "element": "list", "tp": 8, "content": "-1", "indxsInList": [1]}}]}
# rangefilter
LIST_REQUEST_WITH_RANGEFILTER = {"requests": [{"getData": {"source": "dummy", "element": "list", "rangeFilter": {"offset": 1, "count": 1}}}]}
class DsRestAPITest(unittest.TestCase):
def setUp(self):
# a mocked microservice
self.mockedHandler = MockedDsRestApiHandler()
# the "feature" under test
self.dsRestAPI = DsRestAPI(self.mockedHandler.mockedGetDataHandler, self.mockedHandler.mockedSetDataHandler)
def test_getData(self):
'''
Author: EDNIGBO Daniel Gobor
Testcase: test_getData
Tested component: ServiceFramework
Feature: ServiceFramework - DsRestAPI
Requirement: getData request handling
Action_To_Be_taken:
process requests and check responses
Expected_Result: pass
'''
# basic
self.sendRequestAndCompare(INT_REQUEST, self.mockedHandler.elements['int'])
self.sendRequestAndCompare(STRING_REQUEST, self.mockedHandler.elements['string'])
# user credentials
self.sendRequestAndCompare(INT_REQUEST, self.mockedHandler.elements['userError'], WRONG_USER)
# prefilter
self.sendRequestAndCompare(INT_REQUEST_CTRUE, self.mockedHandler.elements['int'])
self.sendRequestAndCompare(INT_REQUEST_CFALSE, self.mockedHandler.elements['filteredItem'])
self.sendRequestAndCompare(INT_REQUEST_TRUE, self.mockedHandler.elements['int'])
self.sendRequestAndCompare(INT_REQUEST_FALSE, self.mockedHandler.elements['filteredItem'])
self.sendRequestAndCompare(INT_REQUEST_PARAM_TRUE, self.mockedHandler.elements['int'])
self.sendRequestAndCompare(INT_REQUEST_PARAM_FALSE, self.mockedHandler.elements['filteredItem'])
self.sendRequestAndCompare(INT_REQUEST_REMAP_TRUE, self.mockedHandler.elements['int'])
# node with children
response = self.dsRestAPI.parseRequest(NODE_WITH_CHILDREN, ADMIN)
self.assertEqual(response['contentList'][0]['node']['val'], self.mockedHandler.elements['int']['node']['val'])
self.assertEqual(response['contentList'][0]['node']['childVals'][0], self.mockedHandler.elements['string'])
# list with children
response = self.dsRestAPI.parseRequest(LIST_WITH_CHILDREN, ADMIN)
self.assertEqual(len(response['contentList'][0]['list']), 3)
for index, element in enumerate(response['contentList'][0]['list']):
self.assertEqual(element['node']['val'], str(index))
self.assertEqual(len(element['node']['childVals']), 1)
self.assertEqual(element['node']['childVals'][0]['node']['val'], 'string_' + str(index))
# list with selection
response = self.dsRestAPI.parseRequest(LIST_WITH_SELECTION, ADMIN)
self.assertEqual(len(response['contentList'][0]['list']), 3)
self.assertNotIn('childVals', response['contentList'][0]['list'][0]['node'])
self.assertEqual('string_1', response['contentList'][0]['list'][1]['node']['childVals'][0]['node']['val'])
self.assertNotIn('childVals', response['contentList'][0]['list'][2]['node'])
# postfilter
response = self.dsRestAPI.parseRequest(LIST_REQUEST_FILTERED, ADMIN)
self.assertEqual(len(response['contentList'][0]['list']), 2)
for index, element in enumerate(response['contentList'][0]['list']):
self.assertEqual(element['node']['val'], str(index))
self.assertEqual(len(element['node']['childVals']), 1)
self.assertEqual(element['node']['childVals'][0]['node']['val'], 'string_' + str(index))
self.sendRequestAndCompare(NODE_REQUEST_PARENT_TRUE, self.mockedHandler.elements['true'])
response = self.dsRestAPI.parseRequest(NODE_REQUEST_PARENT_FALSE, ADMIN)
self.assertEqual(response['contentList'][0]['node']['val'], '')
self.assertEqual(response['contentList'][0]['node']['tp'], 0)
# rangefilter
response = self.dsRestAPI.parseRequest(LIST_REQUEST_WITH_RANGEFILTER, ADMIN)
self.assertEqual(len(response['contentList'][0]['list']), 1)
self.assertEqual(response['contentList'][0]['list'][0]['node']['val'], '1')
def test_setData(self):
'''
Author: EDNIGBO Daniel Gobor
Testcase: test_setData
Tested component: ServiceFramework
Feature: ServiceFramework - DsRestAPI
Requirement: setData request handling
Action_To_Be_taken:
process requests and check responses
Expected_Result: pass
'''
# user credentials
self.dsRestAPI.parseRequest(INT_REQUEST_SET, WRONG_USER)
response = self.dsRestAPI.parseRequest(INT_REQUEST, ADMIN)
self.assertEqual(response['contentList'][0]['node']['val'], "1")
# simple set
self.dsRestAPI.parseRequest(INT_REQUEST_SET, ADMIN)
response = self.dsRestAPI.parseRequest(INT_REQUEST, ADMIN)
self.assertEqual(response['contentList'][0]['node']['val'], "-1")
# set with params
self.dsRestAPI.parseRequest(LIST_ELEMENT_SET, ADMIN)
response = self.dsRestAPI.parseRequest(LIST_WITH_CHILDREN, ADMIN)
self.assertEqual(response['contentList'][0]['list'][0]['node']['val'], "0")
self.assertEqual(response['contentList'][0]['list'][1]['node']['val'], "1")
self.assertEqual(response['contentList'][0]['list'][2]['node']['val'], "2")
self.assertEqual(response['contentList'][0]['list'][0]['node']['childVals'][0]['node']['val'], "other_string")
self.assertEqual(response['contentList'][0]['list'][1]['node']['childVals'][0]['node']['val'], "string_1")
self.assertEqual(response['contentList'][0]['list'][2]['node']['childVals'][0]['node']['val'], "string_2")
# set list element
self.dsRestAPI.parseRequest(LIST_SET, ADMIN)
response = self.dsRestAPI.parseRequest(LIST_REQUEST, ADMIN)
self.assertEqual(response['contentList'][0]['list'][0]['node']['val'], "0")
self.assertEqual(response['contentList'][0]['list'][1]['node']['val'], "-1")
self.assertEqual(response['contentList'][0]['list'][2]['node']['val'], "2")
def sendRequestAndCompare(self, request, expected, userCredentials = ADMIN):
response = self.dsRestAPI.parseRequest(request, userCredentials)
self.assertEqual(response['contentList'][0], expected)