def setupDataRetrieve(exceptions={}, **returnValues): dataRetrieve = HarvesterDataRetrieve() mockHarvesterData = CallTrace('mockHarvesterData', returnValues=returnValues) mockHarvesterData.exceptions = exceptions dataRetrieve.addObserver(mockHarvesterData) return dataRetrieve, mockHarvesterData
def testSomethingElseThanGetIsNotAllowed(self): dataRetrieve = HarvesterDataRetrieve() observer = CallTrace('observer') dataRetrieve.addObserver(observer) result = asString(dataRetrieve.handleRequest(arguments=dict(argument=['value'], verb=['AddObserver']))) header, body = result.split(CRLF*2,1) self.assertEqual(okJson, header+CRLF*2) self.assertEquals({'request': {'verb': 'AddObserver', 'argument': 'value'}, 'error': {'message': 'Value of the verb argument is not a legal verb, the verb argument is missing, or the verb argument is repeated.', 'code': 'badVerb'}}, JsonDict.loads(body)) self.assertEquals([], observer.calledMethodNames())
def testKnownCodeException(self): dataRetrieve = HarvesterDataRetrieve() observer = CallTrace('observer') observer.exceptions = dict(getError=Exception('idDoesNotExist')) dataRetrieve.addObserver(observer) result = asString(dataRetrieve.handleRequest(arguments=dict(verb=['GetError']))) header, body = result.split(CRLF*2,1) self.assertEqual(okJson, header+CRLF*2) self.assertEquals({'request': {'verb': 'GetError'}, 'error': {'message': 'The value of an argument (id or key) is unknown or illegal.', 'code': 'idDoesNotExist'}}, JsonDict.loads(body)) self.assertEquals(['getError'], observer.calledMethodNames())
def testErrorInCall(self): dataRetrieve = HarvesterDataRetrieve() observer = CallTrace('observer') observer.exceptions = dict(getError=Exception('Bad Bad Bad')) dataRetrieve.addObserver(observer) result = asString(dataRetrieve.handleRequest(arguments=dict(verb=['GetError']))) header, body = result.split(CRLF*2,1) self.assertEqual(okJson, header+CRLF*2) self.assertEquals({'request': {'verb': 'GetError'}, 'error': {'message': "Exception('Bad Bad Bad',)", 'code': 'unknown'}}, JsonDict.loads(body)) self.assertEquals(['getError'], observer.calledMethodNames())
def testGetUnexisting(self): dataRetrieve = HarvesterDataRetrieve() observer = CallTrace('observer') observer.exceptions=dict(getUnexisting=DeclineMessage()) dataRetrieve.addObserver(observer) result = asString(dataRetrieve.handleRequest(arguments=dict(verb=['GetUnexisting'], argument=['value']))) header, body = result.split(CRLF*2,1) self.assertEqual(okJson, header+CRLF*2) self.assertEquals({'request': {'verb': 'GetUnexisting', 'argument': 'value'}, 'error': {'message': 'Value of the verb argument is not a legal verb, the verb argument is missing, or the verb argument is repeated.', 'code': 'badVerb'}}, JsonDict.loads(body)) self.assertEquals(['getUnexisting'], observer.calledMethodNames()) self.assertEquals({'argument': 'value'}, observer.calledMethods[0].kwargs)
def testGetSomethingIsAllowed(self): dataRetrieve = HarvesterDataRetrieve() observer = CallTrace('observer', returnValues=dict(getSomething='get something result', listSomething=['a', 'b'])) dataRetrieve.addObserver(observer) result = asString(dataRetrieve.handleRequest(arguments=dict(verb=['GetSomething'], argument=['value']))) header, body = result.split(CRLF*2,1) self.assertEqual(okJson, header+CRLF*2) self.assertEquals({'request': { 'verb': 'GetSomething', 'argument': 'value', }, 'response': {'GetSomething': 'get something result'}}, JsonDict.loads(body)) self.assertEquals(['getSomething'], observer.calledMethodNames()) self.assertEquals({'argument': 'value'}, observer.calledMethods[0].kwargs)