def test_execute(self): inputMap = { "Content-Type": "application/json", "a": 1, "b": "naman aggarwal %20", "id": 3 } config = OperationConfig("/user/{a}", "list", ["Content-Type"], []) metadata = OperationMetadata("0.0.1", "https://sandbox.api.mastercard.com") with patch('mastercardapicore.core.controller.Config') as mock_config: #Set Authentication to None mock_config.getAuthentication.return_value = None with self.assertRaises(APIException): content = self.controller.execute(config, metadata, inputMap) #Set Authentication to some other object mock_config.getAuthentication.return_value = "stringobject" with self.assertRaises(APIException): content = self.controller.execute(config, metadata, inputMap) with patch( 'mastercardapicore.core.controller.Session') as mock_session: response = Mock() response.content = "Some Content" response.status_code = 200 mock_session().send.return_value = response content = self.controller.execute(config, metadata, inputMap)
def getOperationMetadata(self): return OperationMetadata(ResourceConfig.getInstance().getVersion(), ResourceConfig.getInstance().getHost(), ResourceConfig.getInstance().getContext())
def getOperationMetadata(self): return OperationMetadata("0.0.1", "http://localhost:8081")
def test_environment(self): inputMap = [] Config.setEnvironment(Environment.SANDBOX) resourceConfig = ResourceConfig() config = OperationConfig("/fraud/#env/v1/account-inquiry", "create", [], []) metadata = OperationMetadata("0.0.1", resourceConfig.getHost(), resourceConfig.getContext()) #dafault metadata = OperationMetadata("0.0.1", resourceConfig.getHost(), resourceConfig.getContext()) url = self.controller.getURL(config, metadata, inputMap) self.assertEqual( url, "https://sandbox.api.mastercard.com/fraud/v1/account-inquiry") #dafault Config.setEnvironment(Environment.PRODUCTION_MTF) metadata = OperationMetadata("0.0.1", resourceConfig.getHost(), resourceConfig.getContext()) self.assertEqual( self.controller.getURL(config, metadata, inputMap), "https://api.mastercard.com/fraud/mtf/v1/account-inquiry") Config.setEnvironment(Environment.PRODUCTION_ITF) metadata = OperationMetadata("0.0.1", resourceConfig.getHost(), resourceConfig.getContext()) self.assertEqual( self.controller.getURL(config, metadata, inputMap), "https://api.mastercard.com/fraud/itf/v1/account-inquiry") Config.setEnvironment(Environment.STAGE) metadata = OperationMetadata("0.0.1", resourceConfig.getHost(), resourceConfig.getContext()) self.assertEqual( self.controller.getURL(config, metadata, inputMap), "https://stage.api.mastercard.com/fraud/v1/account-inquiry") Config.setEnvironment("") metadata = OperationMetadata("0.0.1", resourceConfig.getHost(), resourceConfig.getContext()) self.assertEqual( self.controller.getURL(config, metadata, inputMap), "https://stage.api.mastercard.com/fraud/v1/account-inquiry") Config.setEnvironment(None) metadata = OperationMetadata("0.0.1", resourceConfig.getHost(), resourceConfig.getContext()) self.assertEqual( self.controller.getURL(config, metadata, inputMap), "https://stage.api.mastercard.com/fraud/v1/account-inquiry") Config.setEnvironment(Environment.LOCALHOST) metadata = OperationMetadata("0.0.1", resourceConfig.getHost(), resourceConfig.getContext()) self.assertEqual(self.controller.getURL(config, metadata, inputMap), "http://localhost:8081/fraud/v1/account-inquiry") Config.clearResourceConfig()
def test_getRequestObject(self): defaultHeaders = { APIController.KEY_ACCEPT: APIController.APPLICATION_JSON, APIController.KEY_CONTENT_TYPE: APIController.APPLICATION_JSON, APIController.KEY_USER_AGENT: APIController.PYTHON_SDK + "/0.0.1" } inputMap = { "param1": 1, "param2": 2, "a": "1", APIController.KEY_ACCEPT: APIController.APPLICATION_JSON, APIController.KEY_CONTENT_TYPE: APIController.APPLICATION_JSON, APIController.KEY_USER_AGENT: APIController.PYTHON_SDK + "/0.0.1" } config = OperationConfig("/fraud/api/v1/account-inquiry", "create", ['Accept', 'Content-Type', 'User-Agent'], ["a"]) metadata = OperationMetadata("0.0.1", "https://sandbox.api.mastercard.com") url = "https://sandbox.api.mastercard.com/fraud/api/v1/account-inquiry" Config.setAuthentication(None) #Create Request with inputMap request = self.controller.getRequestObject(config, metadata, inputMap) self.assertEqual(request.url, url) self.assertEqual(request.params, { APIController.KEY_FORMAT: APIController.JSON, "a": "1" }) self.assertEqual(json.loads(request.data), inputMap) self.assertEqual(request.headers, defaultHeaders) inputMap = {"param1": 1, "param2": 2, "a": "1", "b": 2} config = OperationConfig("/fraud/api/v1/account-inquiry", "list", ['Accept', 'Content-Type', 'User-Agent'], ["a", "b"]) #List Request with inputMap request = self.controller.getRequestObject(config, metadata, inputMap) self.assertEqual(request.params, { "param1": 1, "param2": 2, "a": "1", "b": 2, "Format": "JSON" }) self.assertEqual(request.data, []) self.assertEqual(request.headers, defaultHeaders) self.assertEqual(request.url, url) inputMap = {"a": "1", "b": 2} #List Request with no inputMap request = self.controller.getRequestObject(config, metadata, inputMap) self.assertEqual(request.params, {"a": "1", "b": 2, "Format": "JSON"}) self.assertEqual(request.data, []) self.assertEqual(request.headers, defaultHeaders) self.assertEqual(request.url, url)
def test_getURL(self): inputMap = { 'api': 'lostandstolen', 'version': 1, 'three': 3, 'four': 4, 'five': 5 } resourceConfig = ResourceConfig() config = OperationConfig("/fraud/{api}/v{version}/account-inquiry", "create", [], []) metadata = OperationMetadata("0.0.1", "https://sandbox.api.mastercard.com") url = self.controller.getURL(config, metadata, inputMap) #Normal URL self.assertEqual( url, "https://sandbox.api.mastercard.com/fraud/lostandstolen/v1/account-inquiry" ) self.assertEqual(3, len(inputMap)) inputMap = { 'api': 'lostandstolen', 'version': 1, 'three': 3, 'four': 4, 'five': 5 } #URL with trailing / config = OperationConfig("/fraud/{api}/v{version}/account-inquiry/", "create", [], []) url = self.controller.getURL(config, metadata, inputMap) self.assertEqual( url, "https://sandbox.api.mastercard.com/fraud/lostandstolen/v1/account-inquiry" ) self.assertEqual(3, len(inputMap)) inputMap = {'api': 'lostandstolen', 'version': 1, 'three': 3, 'id': 1} #URL with id and action delete config = OperationConfig( "/fraud/{api}/v{version}/account-inquiry/{id}", "delete", [], []) url = self.controller.getURL(config, metadata, inputMap) self.assertEqual( url, "https://sandbox.api.mastercard.com/fraud/lostandstolen/v1/account-inquiry/1" ) self.assertEqual(1, len(inputMap)) inputMap = {'api': 'lostandstolen', 'version': 1, 'three': 3, 'id': 1} #URL with id in inputMap but not in url config = OperationConfig("/fraud/{api}/v{version}/account-inquiry", "delete", [], []) url = self.controller.getURL(config, metadata, inputMap) self.assertEqual( url, "https://sandbox.api.mastercard.com/fraud/lostandstolen/v1/account-inquiry/1" ) self.assertEqual(1, len(inputMap)) inputMap = {'api': 'lostandstolen', 'version': 1, 'three': 3, 'id': 1} #URL with id in inputMap but not in url and method create config = OperationConfig("/fraud/{api}/v{version}/account-inquiry", "create", [], []) url = self.controller.getURL(config, metadata, inputMap) self.assertEqual( url, "https://sandbox.api.mastercard.com/fraud/lostandstolen/v1/account-inquiry" ) self.assertEqual(2, len(inputMap)) #Now that the key api and version are not there in map #This should raise a key error with self.assertRaises(KeyError): config = OperationConfig("/fraud/{api}/v{version}/account-inquiry", "create", [], []) url = self.controller.getURL(config, metadata, inputMap) print(url)
def getOperationMetadata(self): return OperationMetadata("0.0.1", "https://sandbox.api.mastercard.com")