def setUp(self): self.plugin_finder = PassivePluginsFinder(None) self.yoast_seo_meta = Meta( key="plugins/wordpress-seo", name="Yoast SEO", url= "https://yoast.com/wordpress/plugins/seo/#utm_source=wpadmin&utm_medium=" "plugin&utm_campaign=wpseoplugin") self.google_analytics_meta = Meta( key="plugins/google-analytics-for-wordpress", name="Google Analytics by MonsterInsights", url= "https://www.monsterinsights.com/pricing/#utm_source=wordpress&utm_medium" "=plugin&utm_campaign=wpgaplugin&utm_content=v504") self.postratings_meta = Meta(key="plugins/wp-postratings", name="WP-PostRatings") self.total_cache_meta = Meta( key="plugins/w3-total-cache", name="W3 Total Cache", url="http://www.w3-edge.com/wordpress-plugins/w3-total-cache/") self.plugin_finder.meta_list = MetaList(key="plugins", metas=[ self.yoast_seo_meta, self.google_analytics_meta, self.postratings_meta, self.total_cache_meta ])
def test_get_plugin_key_from_name_in_string(self): plugin_string0 = "BEGIN wp-parsely Plugin Version 1.10.2 " plugin_string1 = "This site uses the wp-captcha plugin." plugin_string2 = "No plugin name in this string" plugin_string3 = "This site uses the Google Analytics by MonsterInsights plugin" plugin0_meta = Meta(key="plugins/wp-parsely", name="Parse.ly") plugin1_meta = Meta(key="plugins/wp-captcha", name="WP Captcha") self.plugin_finder.meta_list = MetaList( key="plugins", metas=[plugin0_meta, plugin1_meta, self.google_analytics_meta]) plugin0_key = self.plugin_finder._get_plugin_key_from_name_in_string( plugin_string0) plugin1_key = self.plugin_finder._get_plugin_key_from_name_in_string( plugin_string1) plugin2_key = self.plugin_finder._get_plugin_key_from_name_in_string( plugin_string2) plugin3_key = self.plugin_finder._get_plugin_key_from_name_in_string( plugin_string3) self.assertEqual(plugin0_key, plugin0_meta.key) self.assertEqual(plugin1_key, plugin1_meta.key) self.assertIsNone(plugin2_key) self.assertEqual(plugin3_key, self.google_analytics_meta.key)
def dump_meta(self, key, export_path): meta_list = MetaList(key=key) for meta in self.storage.list_meta(key): meta_list.metas.append(meta) file_name = join(export_path, "vane2_%s_meta.json" % key) self._dump(file_name, meta_list, MetaListSchema())
def test_find_plugin_in_string_find_plugin_from_path_in_comment(self): comment = "this is a comment with a plugin url: http://www.wpsite.com/wp-content/plugins/my-plugin/script.js" self.plugin_finder.meta_list = MetaList( key="plugins", metas=[Meta(key="plugins/my-plugin")]) plugin_key, version = self.plugin_finder._find_plugin_in_string( comment).popitem() self.assertEqual(plugin_key, "plugins/my-plugin")
def test_find_plugin_in_string_return_longest_match(self): self.plugin_finder.meta_list = MetaList(key="plugins") self.plugin_finder.meta_list.metas = [ Meta(key="plugins/captcha"), Meta(key="plugins/wp-captcha") ] string = "This site uses the wp-captcha plugin." key, version = self.plugin_finder._find_plugin_in_string( string).popitem() self.assertEqual(key, "plugins/wp-captcha")
def test_find_plugin_in_string_doesnt_return_words_containing_plugin_names( self): meta_list = MetaList(key="plugins", metas=[ Meta(key="plugins/nofollow"), Meta(key="plugins/recentcomments") ]) self.plugin_finder.set_plugins_meta_list(meta_list) string1 = "external nofollow" string2 = "recentcomments" self.assertIsNone(self.plugin_finder._find_plugin_in_string(string1)) self.assertIsNone(self.plugin_finder._find_plugin_in_string(string2))
def test_find_plugin_in_string_only_return_full_match(self): self.plugin_finder.meta_list = MetaList(key="plugins") self.plugin_finder.meta_list.metas = [ Meta(key="plugins/recaptcha"), Meta(key="plugins/spam-captcha"), Meta(key="plugins/pluscaptcha"), Meta(key="plugins/wp-captcha"), Meta(key="plugins/typing-lag-fix-for-yoast-seo", name="Typing Lag Fix for Yoast SEO") ] string0 = "This site uses the captcha plugin." string1 = "This site is optimized with the Yoast SEO plugin v4.0.2 - https://yoast.com/wordpress/plugins/seo/" self.assertIsNone(self.plugin_finder._find_plugin_in_string(string0)) self.assertIsNone(self.plugin_finder._find_plugin_in_string(string1))
def test_find_plugin_in_string_doesnt_find_name_that_are_part_of_larger_word( self): """Test that a word like 'secondary' in a comment doesn't match a plugin like 'econda'.""" meta_list = MetaList(key="plugins", metas=[ Meta(key="plugins/econda"), Meta(key="plugins/nofollow"), Meta(key="plugins/recentcomments"), Meta(key="plugins/google") ]) self.plugin_finder.set_plugins_meta_list(meta_list) string0 = "secondary-toggle" string3 = "//fonts.googleapis.com/css" self.assertIsNone(self.plugin_finder._find_plugin_in_string(string0)) self.assertIsNone(self.plugin_finder._find_plugin_in_string(string3))
def test_find_plugin_in_string_return_plugin_key_with_key_in_meta_that_matches_string( self): string0 = "BEGIN wp-parsely Plugin Version 1.10.2 " string1 = "This site uses the wp-captcha plugin." string2 = "No plugin name in this string" self.plugin_finder.meta_list = MetaList(key="plugins") self.plugin_finder.meta_list.metas.append( Meta(key="plugins/wp-parsely", name="Parse.ly")) self.plugin_finder.meta_list.metas.append( Meta(key="plugins/wp-captcha", name="WP Captcha")) plugin_key0, version = self.plugin_finder._find_plugin_in_string( string0).popitem() plugin_key1, version = self.plugin_finder._find_plugin_in_string( string1).popitem() plugin_key2 = self.plugin_finder._find_plugin_in_string(string2) self.assertEqual(plugin_key0, "plugins/wp-parsely") self.assertEqual(plugin_key1, "plugins/wp-captcha") self.assertIsNone(plugin_key2)
def setUp(self): meta_list = MetaList( key="themes", metas=[Meta(key="themes/twenty11"), Meta(key="themes/kratos")]) self.themes_finder = PassiveThemesFinder(meta_list)