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)
Esempio n. 2
0
    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)
Esempio n. 4
0
    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")
Esempio n. 5
0
    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)
Esempio n. 7
0
    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"))