async def test_flag_as_popular_from_api(self, loop): meta_1 = Meta(key="some-meta-1") meta_2 = Meta(key="some-meta-2") meta_3 = Meta(key="some-meta-3") my_response = ClientResponse('GET', URL('http://api.wordpress.org/plugins/info/1.1/?action=query_plugins' '&request[browse]=popular&request[per_page]=200')) my_response.status = 200 my_response.headers = {'Content-Type': 'application/json'} my_response._body = read_file(__file__, 'popular-plugins.json').encode('utf8') aiohttp_session = ClientSessionMock(get_response=my_response) handler = WordPressRepository(loop=loop, aiohttp_session=aiohttp_session, storage=MagicMock()) handler.storage.read_meta.side_effect = [meta_1, meta_2, meta_3] await handler.mark_popular_plugins() handler.session.get.assert_called_with('http://api.wordpress.org/plugins/info/1.1/?action=query_plugins' '&request[browse]=popular&request[per_page]=200') handler.storage.write_meta.assert_has_calls([ call(meta_1), call(meta_2), ]) handler.storage.read_meta.assert_has_calls([ call("plugins/woocommerce"), call("plugins/google-sitemap-generator"), ], any_order=True) self.assertTrue(meta_1.is_popular) self.assertTrue(meta_2.is_popular) self.assertIsNone(meta_3.is_popular)
async def test_get_vulnerability_entry_return_none_if_page_request_response_status_is_not_200( self): fake_get_response = MagicMock() fake_get_response.status = 503 fetcher = SecurityFocusFetcher(aiohttp_session=ClientSessionMock( get_response=fake_get_response)) self.assertIsNone(await fetcher.get_vulnerability_entry("12345"))
async def test_fetch_plugin_data(self, loop): my_response = ClientResponse('GET', URL('https://api.wordpress.org/plugins/info/1.0/better-wp-security.json')) my_response.status = 200 my_response.headers = {'Content-Type': 'application/json'} my_response._body = read_file(__file__, 'better-wp-security.json').encode('utf8') aiohttp_session = ClientSessionMock(get_response=my_response) handler = WordPressRepository(loop=loop, aiohttp_session=aiohttp_session) plugin = await handler.fetch_plugin('better-wp-security') handler.session.get.assert_called_with('https://api.wordpress.org/plugins/info/1.0/better-wp-security.json') self.assertEqual('plugins/better-wp-security', plugin.key)
async def test_get_vulnerabilities(self): fake_get_response = MagicMock() fake_get_response.status = 200 fake_get_response.text = make_mocked_coro( return_value="<html><head></head><body></body></html>") fetcher = SecurityFocusFetcher(aiohttp_session=ClientSessionMock( get_response=fake_get_response)) fetcher.get_vulnerability_list = make_mocked_coro(return_value=[ "http://www.securityfocus.com/bid/93104", "http://www.securityfocus.com/bid/92841" ]) vuln_entries = await fetcher.get_vulnerabilities() self.assertEqual(vuln_entries[0]["id"], "93104") self.assertEqual(vuln_entries[1]["id"], "92841")
def setUp(self): self.release = GitHubRelease() self.release.set_repository_settings("Owner", "password", "repository_name") self.release.aiohttp_session = ClientSessionMock() self.files_in_dir = ["file1.json", "file2.json"] self.dir_path = "files/to/compress" self.fake_glob = MagicMock(return_value=[ join(self.dir_path, self.files_in_dir[0]), join(self.dir_path, self.files_in_dir[1]) ]) glob_patch = patch("openwebvulndb.common.release.glob", self.fake_glob) glob_patch.start() self.addCleanup(glob_patch.stop)
async def test_fetch_theme_data(self, loop): my_response = ClientResponse( 'GET', URL('https://api.wordpress.org/themes/info/1.1/?action=theme_information&request[slug]=twentyeleven' )) # noqa my_response.status = 200 my_response._headers = {'Content-Type': 'application/json'} my_response._body = read_file(__file__, 'twentyeleven.json').encode('utf8') aiohttp_session = ClientSessionMock(get_response=my_response) handler = WordPressRepository(loop=loop, aiohttp_session=aiohttp_session) theme = await handler.fetch_theme('twentyeleven') handler.session.get.assert_called_with( 'https://api.wordpress.org/themes/info/1.1/?action=theme_information&request[slug]=twentyeleven' ) # noqa self.assertEqual('themes/twentyeleven', theme.key) self.assertEqual('Twenty Eleven', theme.name)
async def test_get_vulnerability_entry_return_none_if_page_request_raise_exception( self): fetcher = SecurityFocusFetcher(aiohttp_session=ClientSessionMock( get_exception=asyncio.TimeoutError)) self.assertIsNone(await fetcher.get_vulnerability_entry("12345"))