def setUp(self): """ Create the RestyCodes instance. """ self._rc = RestyCodes(storeSeq=True)
class TestRestyCodes(unittest.TestCase): """ Tests for the RestyCodes class. """ SKIP_MESSAGE = "This test will fail until all conditions are implemented." def __init__(self, name): """ :Parameters: name : str Unit test name. """ super(TestRestyCodes, self).__init__(name) def setUp(self): """ Create the RestyCodes instance. """ self._rc = RestyCodes(storeSeq=True) def tearDown(self): pass def testSetConditions(self): # Test for an invalid keyword arg. replacements = {'wrongArg': False} self.assertRaises(InvalidConditionNameException, self._rc.setConditions, **replacements) # Test for proper operation. self.__runTest(4, 401, {'authorized': False, 'acceptExists': True}) def test_serviceAvailable(self): self.__runTest(1, 503, {'serviceAvailable': False}) def test_requestUrlTooLong(self): self.__runTest(2, 414, {'requestUrlTooLong': True}) def test_badRequest(self): self.__runTest(3, 400, {'badRequest': True}) def test_authorized(self): self.__runTest(4, 401, {'authorized': False}) def test_forbidden(self): self.__runTest(5, 403, {'forbidden': True}) def test_notImplemented(self): self.__runTest(6, 501, {'notImplemented': True}) def test_unsupportedMediaType(self): self.__runTest(7, 415, {'unsupportedMediaType': True}) def test_requestEntityTooLarge(self): self.__runTest(8, 413, {'requestEntityTooLarge': True}) def test_options(self): self.__runTest(9, 200, {'options': True}) def test_commonMethod(self): self.__runTest(11, 405, {'commonMethod': False}) def test_knownMethod(self): self.__runTest(11, 501, {'commonMethod': False, 'knownMethod': False}) def test_methodAllowedOnResource(self): self.__runTest(11, 405, {'methodAllowedOnResource': False}) def test_acceptExists(self): self.__runTest(27, 200, {'acceptExists': True}) #, calls=True) def test_acceptMediaTypeAvaliable(self): self.__runTest(13, 406, {'acceptExists': True, 'acceptMediaTypeAvaliable': False}) def test_acceptLanguageExists(self): self.__runTest(27, 200, {'acceptLanguageExists': True}) #, calls=True) def test_acceptLanguageAvaliable(self): self.__runTest(14, 406, {'acceptLanguageExists': True, 'acceptLanguageAvaliable': False}) def test_acceptCharacterSetExists(self): self.__runTest(27, 200, {'acceptCharacterSetExists': True}) def test_acceptCharacterSetAvaliable(self): self.__runTest(15, 406, {'acceptCharacterSetExists': True, 'acceptCharacterSetAvaliable': False}) def test_acceptEncodingExists(self): self.__runTest(27, 200, {'acceptEncodingExists': True}) def test_acceptEncodingAvaliable(self): self.__runTest(16, 406, {'acceptEncodingExists': True, 'acceptEncodingAvaliable': False}) #@skip(SKIP_MESSAGE) def test_resourceExists(self): self.__runTest(26, 200, {'resourceExists': True}, calls=False) self.__runTest(20, 404, {'resourceExists': False}, calls=False) #@skip(SKIP_MESSAGE) def test_ifMatchExists(self): self.__runTest(28, 200, {'resourceExists': True, 'ifMatchExists': True}, calls=False) #@skip(SKIP_MESSAGE) def test_ifMatchAnyExists(self): self.__runTest(27, 200, {'resourceExists': True, 'ifMatchExists': True, 'ifMatchAnyExists': True}, calls=False) self.__runTest(28, 200, {'resourceExists': True, 'ifMatchExists': True, 'ifMatchAnyExists': False}, calls=False) self.__runTest(17, 412, {'resourceExists': False, 'ifMatchAnyExists': True}, calls=False) def test_eTagInMatch(self): self.__runTest(19, 412, {'resourceExists': True, 'ifMatchExists': True, 'ifMatchAnyExists': False, 'eTagInMatch': False}, calls=False) self.__runTest(28, 200, {'resourceExists': True, 'ifMatchExists': True, 'ifMatchAnyExists': False, 'eTagInMatch': True}, calls=False) #@skip(SKIP_MESSAGE) def test_ifUnmodifiedSinceExists(self): self.__runTest(27, 200, {'resourceExists': True, 'ifUnmodifiedSinceExists': True}, calls=False) #@skip(SKIP_MESSAGE) def test_ifUnmodifiedSinceIsValidDate(self): self.__runTest(28, 200, {'resourceExists': True, 'ifUnmodifiedSinceExists': True, 'ifUnmodifiedSinceIsValidDate': True}, calls=False) def test_lastModifiedGtIfUnmodifiedSince(self): self.__runTest(20, 412, {'resourceExists': True, 'ifUnmodifiedSinceExists': True, 'ifUnmodifiedSinceIsValidDate': True, 'lastModifiedGtIfUnmodifiedSince': True}) self.__runTest(28, 200, {'resourceExists': True, 'ifUnmodifiedSinceExists': True, 'ifUnmodifiedSinceIsValidDate': True, 'lastModifiedGtIfUnmodifiedSince': False}) def test_put(self): self.__runTest(27, 200, {'resourceExists': True, 'put': True}) self.__runTest(21, 201, {'resourceExists': False, 'put': True}) def test_applyToDifferentURI(self): self.__runTest(19, 301, {'resourceExists': False, 'put': True, 'applyToDifferentURI': True}) def test_conflict(self): self.__runTest(24, 409, {'resourceExists': True, 'put': True, 'conflict': True}) self.__runTest(20, 409, {'resourceExists': False, 'put': True, 'conflict': True}) #, calls=True) def test_newResourceCreated(self): self.__runTest(22, 202, {'resourceExists': False, 'put': True, 'newResourceCreated': False}) #, calls=True) self.__runTest(24, 202, {'resourceExists': False, 'post': True, 'newResourceCreated': False}) #, calls=True) def test_resourcePreviouslyExisted(self): self.__runTest(22, 410, {'resourceExists': False, 'resourcePreviouslyExisted': True}) def test_resourceMovedPermanently(self): self.__runTest(20, 301, {'resourceExists': False, 'resourcePreviouslyExisted': True, 'resourceMovedPermanently': True}) def test_resourceMovedTemporarily(self): self.__runTest(21, 307, {'resourceExists': False, 'resourcePreviouslyExisted': True, 'resourceMovedTemporarily': True}) #@skip(SKIP_MESSAGE) def test_post(self): self.__runTest(23, 201, {'resourceExists': False, 'post': True}) self.__runTest(25, 201, {'resourceExists': False, 'resourcePreviouslyExisted': True, 'post': True}) #, calls=True) def test_permitPostToMissingResource(self): self.__runTest(21, 404, {'resourceExists': False, 'post': True, 'permitPostToMissingResource': False}, calls=False) self.__runTest(23, 410, {'resourceExists': False, 'resourcePreviouslyExisted': True, 'post': True, 'permitPostToMissingResource': False}, calls=False) def test_redirect(self): self.__runTest(23, 303, {'resourceExists': True, 'post': True, 'redirect': True}, calls=False) self.__runTest(23, 303, {'resourceExists': True, 'resourcePreviouslyExisted': True, 'post': True, 'permitPostToMissingResource': True, 'redirect': True}, calls=False) self.__runTest(23, 303, {'resourceExists': True, 'post': True, 'permitPostToMissingResource': True, 'redirect': True}, calls=False) #@skip(SKIP_MESSAGE) def test_ifNoneMatchExists(self): self.__runTest(28, 200, {'resourceExists': True, 'ifNoneMatchExists': True}, calls=False) #@skip(SKIP_MESSAGE) def test_ifNoneMatchAnyExists(self): self.__runTest(21, 304, {'resourceExists': True, 'ifNoneMatchExists': True, 'ifNoneMatchAnyExists': True}, calls=False) self.__runTest(28, 200, {'resourceExists': True, 'ifNoneMatchExists': True, 'ifNoneMatchAnyExists': False}, calls=False) #@skip(SKIP_MESSAGE) def test_eTagInIfNoneMatch(self): self.__runTest(22, 304, {'resourceExists': True, 'ifNoneMatchExists': True, 'eTagInIfNoneMatch': True}, calls=False) self.__runTest(28, 200, {'resourceExists': True, 'ifNoneMatchExists': True, 'eTagInIfNoneMatch': False}, calls=False) def test_getOrHead(self): self.__runTest(21, 304, {'resourceExists': True, 'ifNoneMatchExists': True, 'ifNoneMatchAnyExists': True, 'getOrHead': True}, calls=False) self.__runTest(21, 412, {'resourceExists': True, 'ifNoneMatchExists': True, 'ifNoneMatchAnyExists': True, 'getOrHead': False}, calls=False) self.__runTest(22, 304, {'resourceExists': True, 'ifNoneMatchExists': True, 'eTagInIfNoneMatch': True, 'getOrHead': True}, calls=False) self.__runTest(22, 412, {'resourceExists': True, 'ifNoneMatchExists': True, 'eTagInIfNoneMatch': True, 'getOrHead': False}, calls=False) #@skip(SKIP_MESSAGE) def test_ifModifiedSinceExists(self): self.__runTest(27, 200, {'resourceExists': True, 'ifModifiedSinceExists': True}, calls=False) #@skip(SKIP_MESSAGE) def test_ifModifiedSinceIsValidDate(self): self.__runTest(27, 200, {'resourceExists': True, 'ifModifiedSinceExists': True, 'ifModifiedSinceIsValidDate': False}, calls=False) self.__runTest(28, 200, {'resourceExists': True, 'ifModifiedSinceExists': True, 'ifModifiedSinceIsValidDate': True}, calls=False) #@skip(SKIP_MESSAGE) def test_ifModifiedSinceGtNow(self): self.__runTest(29, 200, {'resourceExists': True, 'ifModifiedSinceExists': True, 'ifModifiedSinceIsValidDate': True, 'ifModifiedSinceGtNow': False}, calls=False) self.__runTest(28, 200, {'resourceExists': True, 'ifModifiedSinceExists': True, 'ifModifiedSinceIsValidDate': True, 'ifModifiedSinceGtNow': True}, calls=False) def test_lastModifiedGtIfModifiedSince(self): self.__runTest(23, 304, {'resourceExists': True, 'ifModifiedSinceExists': True, 'ifModifiedSinceIsValidDate': True, 'ifModifiedSinceGtNow': False, 'lastModifiedGtIfModifiedSince': False}) self.__runTest(29, 200, {'resourceExists': True, 'ifModifiedSinceExists': True, 'ifModifiedSinceIsValidDate': True, 'ifModifiedSinceGtNow': False, 'lastModifiedGtIfModifiedSince': True}) #@skip(SKIP_MESSAGE) def test_delete(self): self.__runTest(24, 200, {'resourceExists': True, 'delete': True}, calls=False) self.__runTest(26, 200, {'resourceExists': True, 'delete': False}, calls=False) def test_methodEnacted(self): self.__runTest(22, 202, {'resourceExists': True, 'delete': True, 'methodEnacted': False}, calls=False) def test_responseIncludesAnEntity(self): self.__runTest(22, 204, {'resourceExists': False, 'put': True, 'newResourceCreated': False, 'responseIncludesAnEntity': False}, calls=False) self.__runTest(23, 204, {'resourceExists': True, 'delete': True, 'responseIncludesAnEntity': False}, calls=False) def test_multipleRepresentation(self): self.__runTest(24, 300, {'resourceExists': True, 'delete': True, 'multipleRepresentation': True})#, calls=True) self.__runTest(26, 300, {'resourceExists': True, 'post': True, 'multipleRepresentation': True})#, calls=True) self.__runTest(27, 300, {'resourceExists': True, 'put': True, 'multipleRepresentation': True})#, calls=True) self.__runTest(26, 300, {'resourceExists': True, 'multipleRepresentation': True})#, calls=True) def __runTest(self, expect, code, condition, calls=False): kwargs = self._rc.setConditions(**condition) result = self._rc.getStatus(**kwargs) count = self._rc.getIterationCount() self.__printCalls(calls=calls) msg = "Iteration count should be {}, but found {}".format( expect, count) self.assertTrue(count == expect, msg) msg = "Status code should be {}, but found {}".format( code, result[0]) self.assertTrue(result[0] == code, msg) def __printCalls(self, calls=False): if calls: seq = self._rc.getCallSequence() print for call in seq: print call print "Total Count: {}".format(len(seq))