bgneal@955: """Tests for the core.html module.""" bgneal@955: import unittest bgneal@955: bgneal@955: from core.html import ImageCheckError bgneal@955: from core.html import image_check bgneal@955: bgneal@955: bgneal@955: TEST_HTML = """ bgneal@955:

Posters and Facebook events are starting to come in...

bgneal@955:

image

bgneal@955:

image

bgneal@955: """ bgneal@955: bgneal@955: bgneal@955: class ImageCheckTestCase(unittest.TestCase): bgneal@955: def setUp(self): bgneal@955: self.allowed_hosts = ['example.com'] bgneal@955: bgneal@955: def test_happy_path(self): bgneal@955: url1 = 'https://example.com/1.jpg' bgneal@955: url2 = 'https://example.com/2.jpg' bgneal@955: html = TEST_HTML.format(src1=url1, src2=url2) bgneal@955: bgneal@955: result = image_check(html, self.allowed_hosts) bgneal@955: self.assertTrue(result) bgneal@955: bgneal@955: def test_empty_image(self): bgneal@955: url1 = 'https://example.com/1.jpg' bgneal@955: url2 = '' bgneal@955: html = TEST_HTML.format(src1=url1, src2=url2) bgneal@955: bgneal@955: self.assertRaises(ImageCheckError, image_check, html, self.allowed_hosts) bgneal@955: bgneal@955: def test_relative_ok(self): bgneal@955: url1 = 'https://example.com/1.jpg' bgneal@955: url2 = '/some/path/2.jpg' bgneal@955: html = TEST_HTML.format(src1=url1, src2=url2) bgneal@955: bgneal@955: result = image_check(html, self.allowed_hosts) bgneal@955: self.assertTrue(result) bgneal@955: bgneal@955: def test_non_https(self): bgneal@955: url1 = 'http://example.com/1.jpg' bgneal@955: url2 = 'https://example.com/2.jpg' bgneal@955: html = TEST_HTML.format(src1=url1, src2=url2) bgneal@955: bgneal@955: self.assertRaises(ImageCheckError, image_check, html, self.allowed_hosts) bgneal@955: bgneal@955: def test_missing_hostname(self): bgneal@955: url1 = 'http:///1.jpg' bgneal@955: url2 = 'https://example.com/2.jpg' bgneal@955: html = TEST_HTML.format(src1=url1, src2=url2) bgneal@955: bgneal@955: self.assertRaises(ImageCheckError, image_check, html, self.allowed_hosts) bgneal@955: bgneal@955: def test_hostname_not_allowed1(self): bgneal@955: url1 = 'https://xxx.example.com/1.jpg' bgneal@955: url2 = 'https://example.com/2.jpg' bgneal@955: html = TEST_HTML.format(src1=url1, src2=url2) bgneal@955: bgneal@955: self.assertRaises(ImageCheckError, image_check, html, self.allowed_hosts) bgneal@955: bgneal@955: def test_hostname_not_allowed2(self): bgneal@955: url1 = 'https://xxx.example.com/1.jpg' bgneal@955: url2 = 'https://yyy.example.com/2.jpg' bgneal@955: html = TEST_HTML.format(src1=url1, src2=url2) bgneal@955: bgneal@955: self.assertRaises(ImageCheckError, image_check, html, self.allowed_hosts)