def test_follow_redirects(self): finder = URLFinder() mock_response = MagicMock() mock_response_url = PropertyMock() type(mock_response).url = mock_response_url with patch("requests.get", MagicMock(return_value=mock_response)) as mock_get: # A request is sent to the URL. If there was a redirect return the # final URL. mock_response_url.return_value = "http://finalurl.com" self.assertEquals( finder.follow_redirects("http://redirects.to"), "http://finalurl.com", ) self.assertEquals(mock_get.call_count, 1) self.assertEquals(mock_response_url.call_count, 1) # If there was no redirect return the original URL. self.assertEquals( finder.follow_redirects("http://finalurl.com"), "http://finalurl.com", ) self.assertEquals(mock_get.call_count, 2) self.assertEquals(mock_response_url.call_count, 2) with patch("requests.get", MagicMock(side_effect=requests.RequestException)) as mock_get: # If request failed return None self.assertEquals( finder.follow_redirects("http://redirects.to"), None, ) self.assertEquals(mock_get.call_count, 1)
def test_clean_url(self): finder = URLFinder() finder.is_blacklisted = MagicMock() finder.untiny.extract = MagicMock() finder.follow_redirects = MagicMock() finder.clean_params = MagicMock() finder.is_blacklisted.return_value = True self.assertEquals( finder.clean_url("http://tiny.com"), None ) self.assertEquals(finder.is_blacklisted.call_count, 1) finder.is_blacklisted.return_value = False finder.untiny.extract.side_effect = lambda url: "http://redirect.com" if url == "http://tiny.com" else url finder.follow_redirects.side_effect = lambda url: "http://final.com" if url == "http://redirect.com" else url finder.clean_params.side_effect = lambda url: "http://cleaned.com" if url == "http://final.com" else url self.assertEquals( finder.clean_url("http://tiny.com"), "http://cleaned.com", ) self.assertEquals(finder.is_blacklisted.call_count, 4) self.assertEquals(finder.untiny.extract.call_count, 3) self.assertEquals(finder.follow_redirects.call_count, 2) self.assertEquals(finder.clean_params.call_count, 1)