def setUp(self): # Test data and images are taken from # http://www.warriorhut.org/graphics/pornscanner/pornscanner.zip super(NSFWImageDetectorPluginTestCase, self).setUp() self.plugin = NSFWImageDetectorPlugin(bot=self.bot) self.fixtures_dir = os.path.join(self.fixtures_dir, 'nsfw_plugin') self.safe_images = glob.glob( os.path.join(self.fixtures_dir, 'safe/*.jpg')) self.unsafe_images = glob.glob( os.path.join(self.fixtures_dir, 'unsafe/*.jpg'))
def setUp(self): # Test data and images are taken from # http://www.warriorhut.org/graphics/pornscanner/pornscanner.zip super(NSFWImageDetectorPluginTestCase, self).setUp() self.plugin = NSFWImageDetectorPlugin(bot=self.bot) self.fixtures_dir = os.path.join(self.fixtures_dir, 'nsfw_plugin') self.safe_images = glob.glob(os.path.join(self.fixtures_dir, 'safe/*.jpg')) self.unsafe_images = glob.glob(os.path.join(self.fixtures_dir, 'unsafe/*.jpg'))
def __init__(self, bot): self.bot = bot # reference back to asynchat handler self.joined_channel = False self.usertrim = re.compile('[!+@]') self.bot.known_users = {} # dict of known users present in the channel self.plugins = [ PsywerxHistory(bot=bot), PsywerxKarma(bot=bot), PsywerxGroups(bot=bot), NSFWImageDetectorPlugin(bot=bot), ReadLinks(bot=bot), Uptime(bot=bot), ]
class NSFWImageDetectorPluginTestCase(BasePluginTestCase): def setUp(self): # Test data and images are taken from # http://www.warriorhut.org/graphics/pornscanner/pornscanner.zip super(NSFWImageDetectorPluginTestCase, self).setUp() self.plugin = NSFWImageDetectorPlugin(bot=self.bot) self.fixtures_dir = os.path.join(self.fixtures_dir, 'nsfw_plugin') self.safe_images = glob.glob(os.path.join(self.fixtures_dir, 'safe/*.jpg')) self.unsafe_images = glob.glob(os.path.join(self.fixtures_dir, 'unsafe/*.jpg')) def test_is_image_url(self): valid_image_urls = [ 'http://www.foo.bar/1.jpg' 'http://www.foo.bar/1.png' 'http://www.foo.bar/1.gif' 'http://www.foo.bar/1.JPG' ] invalid_image_urls = [ 'http://www.ponies.com/' 'http://www.ponies.com/bar' ] for url in valid_image_urls: self.assertTrue(self.plugin._is_image_url(url)) for url in invalid_image_urls: self.assertFalse(self.plugin._is_image_url(url)) @patch('os.remove') @patch('plugins.nsfw_image_detector.re') def test_plugin_basic_functionality(self, mock_re, _): # Mock methods, we dont want plugin to actually download files self.plugin._download_image = Mock() self.plugin._is_image_url = Mock() self.plugin._is_image_url.return_value = True # First test "safe" images for file_path in self.safe_images: message = 'check this out %(url)s' % {'url': file_path} mock_re.findall.return_value = [file_path] self.plugin._download_image.return_value = file_path self.plugin.handle_message('channel', 'nick', message) self.assertFalse(self.plugin.bot.say.called) # Then test NSFW images for file_path in self.unsafe_images: message = 'check this out %(url)s' % {'url': file_path} mock_re.findall.return_value = [file_path] self.plugin._download_image.return_value = file_path self.plugin.handle_message('channel', 'nick', message) self.assertTrue( self.plugin.bot.say.call_count == len(self.unsafe_images))
class NSFWImageDetectorPluginTestCase(BasePluginTestCase): def setUp(self): # Test data and images are taken from # http://www.warriorhut.org/graphics/pornscanner/pornscanner.zip super(NSFWImageDetectorPluginTestCase, self).setUp() self.plugin = NSFWImageDetectorPlugin(bot=self.bot) self.fixtures_dir = os.path.join(self.fixtures_dir, 'nsfw_plugin') self.safe_images = glob.glob( os.path.join(self.fixtures_dir, 'safe/*.jpg')) self.unsafe_images = glob.glob( os.path.join(self.fixtures_dir, 'unsafe/*.jpg')) def test_is_image_url(self): valid_image_urls = [ 'http://www.foo.bar/1.jpg' 'http://www.foo.bar/1.png' 'http://www.foo.bar/1.gif' 'http://www.foo.bar/1.JPG' ] invalid_image_urls = [ 'http://www.ponies.com/' 'http://www.ponies.com/bar' ] for url in valid_image_urls: self.assertTrue(self.plugin._is_image_url(url)) for url in invalid_image_urls: self.assertFalse(self.plugin._is_image_url(url)) def test_is_image(self): for image_path in self.safe_images + self.unsafe_images: with open(image_path, 'rb') as f: self.assertTrue(self.plugin._is_image(f.read())) @patch('os.remove') @patch('regex.WEB_URL') def test_plugin_basic_functionality(self, mock_re, _): # Mock methods, we dont want plugin to actually download files self.plugin._download_image = Mock() self.plugin._is_image_url = Mock() self.plugin._is_image_url.return_value = True # First test "safe" images for file_path in self.safe_images: message = 'check this out %(url)s' % {'url': file_path} mock_re.findall.return_value = [file_path] self.plugin._download_image.return_value = file_path self.plugin.handle_message('channel', 'nick', message) self.assertFalse(self.plugin.bot.say.called) # Then test NSFW images for file_path in self.unsafe_images: message = 'check this out %(url)s' % {'url': file_path} mock_re.findall.return_value = [file_path] self.plugin._download_image.return_value = file_path self.plugin.handle_message('channel', 'nick', message) self.assertTrue( self.plugin.bot.say.call_count == len(self.unsafe_images))