def test_allow_no_template_config(self): no_template_config = { k: v for k, v in self.config.items() if k != "templates" } resolver = TemplateHTTPResolver(no_template_config) with pytest.raises(ResolverException): resolver.resolve(app=None, ident="a:foo.jpg", base_uri="")
def test_template_http_resolver(self): # Test with no config self.assertRaises(ResolverException, lambda: TemplateHTTPResolver({})) # Test with the multiple templates config = { 'cache_root': self.app.img_cache.cache_root, 'templates': 'a,b, c, d', 'a': { 'url': 'http://mysite.com/images/%s' }, 'b': { 'url': 'http://mysite.com/images/%s/access/' }, 'c': { 'url': 'http://othersite.co/img/%s' } } self.app.resolver = TemplateHTTPResolver(config) self.assertEqual(self.app.resolver.cache_root, self.app.img_cache.cache_root) self.assert_('a' in self.app.resolver.templates) self.assert_('b' in self.app.resolver.templates) self.assert_('c' in self.app.resolver.templates) self.assert_('d' not in self.app.resolver.templates) self.assertEqual(self.app.resolver.templates['a'], config['a']) self.assertEqual(self.app.resolver.templates['b'], config['b']) self.assertEqual(self.app.resolver.templates['c'], config['c']) # automatically set for simple http resolver self.assertEqual(self.app.resolver.uri_resolvable, True) # test web request uri logic self.assertEqual('http://mysite.com/images/foo.jpg', self.app.resolver._web_request_url('a:foo.jpg')[0]) self.assertEqual('http://mysite.com/images/id1/access/', self.app.resolver._web_request_url('b:id1')[0]) self.assertEqual( 'http://othersite.co/img/foo:bar:baz', self.app.resolver._web_request_url('c:foo:bar:baz')[0]) self.assertEqual(None, self.app.resolver._web_request_url('unknown:id2')[0])
def test_parsing_template_http_resolver_config(self): resolver = TemplateHTTPResolver(self.config) assert resolver.cache_root == self.config['cache_root'] assert resolver.templates['a'] == self.config['a'] assert resolver.templates['b'] == self.config['b'] assert resolver.templates['c'] == self.config['c'] assert 'd' not in resolver.templates # Automatically set by SimpleHTTPResolver assert resolver.uri_resolvable
def test_is_resolvable(self, mock_responses, ident, expected_resolvable): resolver = TemplateHTTPResolver(self.config) assert resolver.is_resolvable(ident=ident) == expected_resolvable
def test_adding_options_to_parsed_uri(self, config, expected_options): new_config = copy.deepcopy(self.config) new_config['a'].update(config) resolver = TemplateHTTPResolver(new_config) _, options = resolver._web_request_url('a:id1.jpg') assert options == expected_options
def test_bad_delimited_ident_is_resolvererror(self, bad_ident): resolver = TemplateHTTPResolver(self.delimited_config) with pytest.raises(ResolverException) as exc: resolver._web_request_url(bad_ident) assert 'Bad URL request' in str(exc.value)
def test_using_delimiters_for_template(self, ident, expected_uri): resolver = TemplateHTTPResolver(self.delimited_config) uri, _ = resolver._web_request_url(ident) assert uri == expected_uri
def test_web_request_uri_logic(self, ident, expected_uri): resolver = TemplateHTTPResolver(self.config) uri, _ = resolver._web_request_url(ident) assert uri == expected_uri
def test_template_http_resolver_with_no_config_is_error(self): with pytest.raises(ResolverException): TemplateHTTPResolver({})