コード例 #1
0
    def testSuccessfulScenario(self):
        dal = self.given_dal()
        key_model = ApiKeyModel(dal, None)
        api_model = FFApi(key_model, validate_url, [FakeSite(), FakeSite()])

        request = {
            "url": "http://www.fanfiction.net/s/5012016/1/Partners",
        }

        result = api_model.get(request)
        self.assertFalse(result.is_valid)
コード例 #2
0
ファイル: ffapi.py プロジェクト: ThePadawan/apiphany
    def testApiWithEvilUrlValidator(self):
        url_parameters = {"url": "totally_invalid_url"}
        api = FFApi(
            ApiKeyModel(self.given_dal(), None),
            evil_url_validate,
            [TestSite()])
        evil_validator_result = evil_url_validate(url_parameters)

        url_validation_result = api._validate(url_parameters)
        self.assertFalse(url_validation_result)
        self.assertEqual(evil_validator_result, url_validation_result)
コード例 #3
0
ファイル: ffapi.py プロジェクト: ThePadawan/apiphany
 def _given_api(self, sites):
     self.api = FFApi(
         ApiKeyModel(self.given_dal(), None),
         validate_url,
         sites)
コード例 #4
0
ファイル: ffapi.py プロジェクト: ThePadawan/apiphany
class FFApiTests(DalTestCase):
    def __init__(self, *args, **kwargs):
        super(FFApiTests, self).__init__(*args, **kwargs)
        self.api = None
        self.result = None

    def testMultipleSitesForSameUrl(self):
        self._given_api([TestSite(), TestSite()])
        self._when_making_request_to("http://example.org")
        self._then_response_is_invalid()
        self._then_response_error_contains("multiple parsers available")

    def testZeroSitesForUrl(self):
        self._given_api([])
        self._when_making_request_to("http://example.org")
        self._then_response_is_invalid()
        self._then_response_error_contains("no parser available")

    def testModelWithFanfictionNet(self):
        html = contents_of("partners1.html")
        self._given_api([FanfictionNetSite(FakeInternet(html))])

        self._when_making_request_to(
            "http://www.fanfiction.net/s/5012016/1/Partners")
        self._then_response_is_valid()

    def testModelWithFanfictionNetAndInfiniteyApiKey(self):
        html = contents_of("partners1.html")
        self._given_api([FanfictionNetSite(FakeInternet(html))])

        self._when_making_request(
            "http://www.fanfiction.net/s/5012016/1/Partners",
            "infinitekey")
        self._then_response_is_valid()

    def testModelWithArchiveOfOurOwn(self):
        html = contents_of("ao3_writteninthebody.html")
        self._given_api([ArchiveOfOurOwnSite(FakeInternet(html))])

        self._when_making_request_to(
            "http://archiveofourown.org/works/5343467")
        self._then_response_is_valid()

    def testApiWithEvilUrlValidator(self):
        url_parameters = {"url": "totally_invalid_url"}
        api = FFApi(
            ApiKeyModel(self.given_dal(), None),
            evil_url_validate,
            [TestSite()])
        evil_validator_result = evil_url_validate(url_parameters)

        url_validation_result = api._validate(url_parameters)
        self.assertFalse(url_validation_result)
        self.assertEqual(evil_validator_result, url_validation_result)

    def _given_api(self, sites):
        self.api = FFApi(
            ApiKeyModel(self.given_dal(), None),
            validate_url,
            sites)

    def _when_making_request_to(self, url):
        return self._when_making_request(url, "testkey")

    def _when_making_request(self, url, key):
        request = {
            "url": url,
            "key": key
        }

        self.result = self.api.get(request)

    def _then_response_is_valid(self):
        self.assertTrue(self.result.is_valid)

    def _then_response_is_invalid(self):
        self.assertFalse(self.result.is_valid)

    def _then_response_error_contains(self, expected_message):
        self.assertTrue(expected_message in self.result.json)