def test_SearchNotFound(self): searchTerm = "asdfasdflkj324;l1kjasd13214aasdf341l324" self.req = getRequestHandleCookie(iPediaFields.search, searchTerm) self.getResponse([ iPediaFields.transactionId, iPediaFields.cookie, iPediaFields.notFound ])
def test_GetArticleCount(self): self.req = getRequestHandleCookie(iPediaFields.getArticleCount, None) self.getResponse([iPediaFields.transactionId,iPediaFields.cookie,iPediaFields.articleCount]) count = int(self.rsp.getField(iPediaFields.articleCount)) # hard to guarantee to always have 100.000 but should be true given that # on 7-7-2004 it was 300.000+ self.assertEqual(count>100000,True)
def test_VerifyInvalidRegCode(self): self.req = getRequestHandleCookie(iPediaFields.verifyRegCode, invalidRegCodeNumber) self.getResponse([ iPediaFields.cookie, iPediaFields.transactionId, iPediaFields.regCodeValid ]) self.assertFieldEqual(self.rsp, iPediaFields.regCodeValid, 0)
def test_NotFound(self): # Ok, so I can't really guarantee that a article with this title doesn't exist # but this is a really good guess self.req = getRequestHandleCookie( iPediaFields.getArticle, "asdfasdflkj324;l1kjasd13214aasdf341l324") self.getResponse([ iPediaFields.transactionId, iPediaFields.cookie, iPediaFields.notFound ])
def test_GetDatabaseTime(self): self.req = getRequestHandleCookie(iPediaFields.getDatabaseTime, None) self.getResponse([ iPediaFields.transactionId, iPediaFields.cookie, iPediaFields.databaseTime ]) # date is in format YYYYMMDD date = self.rsp.getField(iPediaFields.databaseTime) assert 8 == len(date)
def test_SearchSeattle(self): searchTerm = "seattle" self.req = getRequestHandleCookie(iPediaFields.search, searchTerm) self.getResponse([iPediaFields.transactionId,iPediaFields.cookie,iPediaFields.articleTitle,iPediaFields.searchResults]) self.assertFieldEqual(self.rsp,iPediaFields.articleTitle,searchTerm) count = searchResultsCount(self.rsp.getField(iPediaFields.searchResults)) #print "search result count: '%d'" % count # hard to establish the exact number but 100 should be good (when checked # for 7-7-2004 database, it was 201 self.assertEqual(count > 100,True)
def test_GetArticleCount(self): self.req = getRequestHandleCookie(iPediaFields.getArticleCount, None) self.getResponse([ iPediaFields.transactionId, iPediaFields.cookie, iPediaFields.articleCount ]) count = int(self.rsp.getField(iPediaFields.articleCount)) # hard to guarantee to always have 100.000 but should be true given that # on 7-7-2004 it was 300.000+ self.assertEqual(count > 100000, True)
def test_GetSeattle(self): title = "seattle" self.req = getRequestHandleCookie(iPediaFields.getArticle, title) self.getResponse([ iPediaFields.transactionId, iPediaFields.cookie, iPediaFields.formatVersion, iPediaFields.articleBody, iPediaFields.articleTitle, iPediaFields.reverseLinks ]) self.assertFieldEqual(self.rsp, iPediaFields.formatVersion, DEFINITION_FORMAT_VERSION)
def fValidTestOk(test): global g_errors, g_testNumbers testNo = test[0] if g_testNumbers.has_key(testNo): print "Duplicate test number: %d" % testNo sys.exit(0) else: g_testNumbers[ testNo] = 1 # can be anything, we only use it to test if the entry exists fieldsToSend = test[1] assert isinstance(fieldsToSend, list) expectedResultFields = test[2] assert 0 == len(fieldsToSend) % 2 req = getRequestHandleCookie() fieldsCount = len(fieldsToSend) / 2 for fieldNo in range(fieldsCount): fieldName = fieldsToSend[fieldNo * 2] fieldValue = fieldsToSend[fieldNo * 2 + 1] req.addField(fieldName, fieldValue) rsp = Response(req) client.handleCookie(rsp) errorsTxt = [] if not rsp.hasField(Fields.transactionId): errorsTxt.append("Field %s missing" % Fields.transactionId) else: tridGot = rsp.getFieldShort(Fields.transactionId) tridSent = req.transactionId if tridGot != tridSent: errorsTxt.append("Sent transactionId %s but got %s" % (tridSent, tridGot)) for fieldName in expectedResultFields: if isinstance(fieldName, list): assert 2 == len(fieldName) fieldValue = fieldName[1] fieldName = fieldName[0] if not rsp.hasField(fieldName): errorsTxt.append("Field %s missing" % fieldName) else: if fieldValue != rsp.getFieldShort(fieldName): errorsTxt.append( "Field %s value is different, expected: %s, got: %s" % (fieldName, fieldValue, rsp.getFieldShort(fieldName))) else: if not rsp.hasField(fieldName): errorsTxt.append("Field %s missing" % fieldName) if len(errorsTxt) > 0: errorsTxt.append("Full request:\n'%s'" % req.getText()) errorsTxt.append("Full response:\n'%s'" % rsp.getShortText()) g_errors[testNo] = errorsTxt return False else: return True
def verifyArgument(self, field, fRequiresArguments): self.req = getRequestHandleCookie() # do the exact opposite of what's expected if fRequiresArguments: self.req.addField(field, None) else: self.req.addField(field, "not needed argument") self.getResponse([Fields.error, Fields.transactionId]) if fRequiresArguments: self.assertError(ServerErrors.requestArgumentMissing) else: self.assertError(ServerErrors.unexpectedRequestArgument)
def verifyArgument(self, field, fRequiresArguments): self.req = getRequestHandleCookie() # do the exact opposite of what's expected if fRequiresArguments: self.req.addField(field, None) else: self.req.addField(field, "not needed argument") self.getResponse([iPediaFields.error,iPediaFields.transactionId]) if fRequiresArguments: self.assertError(ServerErrors.requestArgumentMissing) else: self.assertError(ServerErrors.unexpectedRequestArgument)
def test_SearchSeattle(self): searchTerm = "seattle" self.req = getRequestHandleCookie(iPediaFields.search, searchTerm) self.getResponse([ iPediaFields.transactionId, iPediaFields.cookie, iPediaFields.articleTitle, iPediaFields.searchResults ]) self.assertFieldEqual(self.rsp, iPediaFields.articleTitle, searchTerm) count = searchResultsCount( self.rsp.getField(iPediaFields.searchResults)) #print "search result count: '%d'" % count # hard to establish the exact number but 100 should be good (when checked # for 7-7-2004 database, it was 201 self.assertEqual(count > 100, True)
def test_ExtraArgument(self): self.req = getRequestHandleCookie() # Get-Random-Article doesn't require an argument, but we're sending it self.req.addField(iPediaFields.getRandom, "not needed") self.getResponse([iPediaFields.error, iPediaFields.transactionId]) self.assertError(ServerErrors.unexpectedRequestArgument)
def prepareTvListingsProviders(self, zipCode): self.req = getRequestHandleCookie(Fields.getTvListingsProviders, zipCode)
def test_GetDatabaseTime(self): self.req = getRequestHandleCookie(iPediaFields.getDatabaseTime, None) self.getResponse([iPediaFields.transactionId,iPediaFields.cookie,iPediaFields.databaseTime]) # date is in format YYYYMMDD date = self.rsp.getField(iPediaFields.databaseTime) assert 8==len(date)
def prepare411PersonSearch(self, query): self.req = getRequestHandleCookie(Fields.get411PersonSearch, query)
def test_Ping(self): # this is the simplest valid requests - only sends transaction id # in response server sends the same transaction id self.req = getRequestHandleCookie() self.getResponse([iPediaFields.cookie,iPediaFields.transactionId])
def prepareWeather(self, location): self.req = getRequestHandleCookie(Fields.getWeather, location)
def prepareJokesList(self, query): self.req = getRequestHandleCookie(Fields.getJokesList, query)
def test_GetCookieGivesRegCode(self): self.req = getRequestHandleCookie(iPediaFields.regCode, testValidRegCode) self.getResponse([iPediaFields.transactionId,iPediaFields.error]) self.assertError(ServerErrors.malformedRequest)
def test_GetSeattle(self): title = "seattle" self.req = getRequestHandleCookie(iPediaFields.getArticle, title) self.getResponse([iPediaFields.transactionId,iPediaFields.cookie,iPediaFields.formatVersion,iPediaFields.articleBody,iPediaFields.articleTitle,iPediaFields.reverseLinks]) self.assertFieldEqual(self.rsp, iPediaFields.formatVersion, DEFINITION_FORMAT_VERSION)
def reqWithCookie(self,fieldName,fieldValue): self.req = getRequestHandleCookie(fieldName,fieldValue)
def test_NotFound(self): # Ok, so I can't really guarantee that a article with this title doesn't exist # but this is a really good guess self.req = getRequestHandleCookie(iPediaFields.getArticle, "asdfasdflkj324;l1kjasd13214aasdf341l324") self.getResponse([iPediaFields.transactionId,iPediaFields.cookie,iPediaFields.notFound])
def test_ExtraArgument(self): self.req = getRequestHandleCookie() # Get-Random-Article doesn't require an argument, but we're sending it self.req.addField(iPediaFields.getRandom, "not needed") self.getResponse([iPediaFields.error,iPediaFields.transactionId]) self.assertError(ServerErrors.unexpectedRequestArgument)
def test_MissingArgument(self): self.req = getRequestHandleCookie() # Get-Cookie requires an argument but we're not sending it self.req.addField(iPediaFields.getCookie, None) self.getResponse([iPediaFields.error,iPediaFields.transactionId]) self.assertError(ServerErrors.requestArgumentMissing)
def test_MalformedRequest(self): self.req = getRequestHandleCookie() # malformed, because there is no ":" self.req.addLine("malformed\n") self.getResponse([iPediaFields.error,iPediaFields.transactionId]) self.assertError(ServerErrors.malformedRequest)
def test_GetCookieGivesCookie(self): self.req = getRequestHandleCookie(iPediaFields.cookie, "I'm a cookie") self.getResponse([iPediaFields.transactionId,iPediaFields.error]) self.assertError(ServerErrors.malformedRequest)
def prepare411International(self, query): self.req = getRequestHandleCookie(Fields.get411InternationalCodeSearch, query)
def prepareRecipe(self, query): self.req = getRequestHandleCookie(Fields.getRecipe, query)
def prepare411ReverseZip(self, query): self.req = getRequestHandleCookie(Fields.get411ReverseZip, query)
def prepareDream(self, dream): self.req = getRequestHandleCookie(Fields.getDream, dream)
def prepareStocksListValidateLast(self, query): self.req = getRequestHandleCookie(Fields.getStocksListValidateLast, query)
def prepareJoke(self, url): self.req = getRequestHandleCookie(Fields.getJoke, url)
def prepareAmazonBrowse(self, url): self.req = getRequestHandleCookie(Fields.getAmazonBrowse, url)
def prepare411BusinessSearch(self, query): self.req = getRequestHandleCookie(Fields.get411BusinessSearch, query)
def test_DuplicateField(self): self.req = getRequestHandleCookie(iPediaFields.getArticleCount, None) self.req.addField(iPediaFields.getArticleCount, None) self.getResponse([iPediaFields.transactionId]) self.assertError(ServerErrors.malformedRequest)
def prepare411ZipByCity(self, query): self.req = getRequestHandleCookie(Fields.get411ZipByCity, query)
def test_Random(self): self.req = getRequestHandleCookie(iPediaFields.getRandom, None) self.getResponse([iPediaFields.transactionId,iPediaFields.cookie,iPediaFields.articleTitle,iPediaFields.formatVersion])
def prepareCurrencies(self): self.req = getRequestHandleCookie(Fields.getCurrencyConversion)
def test_Ping(self): # this is the simplest valid requests - only sends transaction id # in response server sends the same transaction id self.req = getRequestHandleCookie() self.getResponse([Fields.cookie, Fields.transactionId])
def prepareStock(self, url): self.req = getRequestHandleCookie(Fields.getStock, url)
def test_VerifyInvalidRegCode(self): self.req = getRequestHandleCookie(iPediaFields.verifyRegCode, invalidRegCodeNumber) self.getResponse([iPediaFields.cookie,iPediaFields.transactionId,iPediaFields.regCodeValid]) self.assertFieldEqual(self.rsp,iPediaFields.regCodeValid,0)
def prepareHoroscope(self, query): self.req = getRequestHandleCookie(Fields.getHoroscope, query)
def test_DuplicateField(self): self.req = getRequestHandleCookie(iPediaFields.getArticleCount, None) self.req.addField(iPediaFields.getArticleCount, None) self.getResponse([iPediaFields.transactionId]) self.assertError(ServerErrors.malformedRequest)
def test_MissingArgument(self): self.req = getRequestHandleCookie() # Get-Cookie requires an argument but we're not sending it self.req.addField(iPediaFields.getCookie, None) self.getResponse([iPediaFields.error, iPediaFields.transactionId]) self.assertError(ServerErrors.requestArgumentMissing)
def test_SearchNotFound(self): searchTerm = "asdfasdflkj324;l1kjasd13214aasdf341l324" self.req = getRequestHandleCookie(iPediaFields.search, searchTerm) self.getResponse([iPediaFields.transactionId,iPediaFields.cookie,iPediaFields.notFound])
def test_MalformedRequest(self): self.req = getRequestHandleCookie() # malformed, because there is no ":" self.req.addLine("malformed\n") self.getResponse([Fields.error, Fields.transactionId]) self.assertError(ServerErrors.malformedRequest)
def test_UnrecognizedField(self): self.req = getRequestHandleCookie("Foo", "blast") self.getResponse([iPediaFields.error,iPediaFields.transactionId]) self.assertError(ServerErrors.invalidRequest)