def test01_split_url(self): """Test split_url() method. For everything except the handling of extension type on info.json requests (where v1.0 allows XML), the behavior of split_url() is version independent. """ # mismatching baseurl r = IIIFRequest() r.baseurl = 'http://ex.org/a/' self.assertRaises(IIIFRequestError, r.split_url, 'http://other.base.url/') # matching baseurl, but bad request r = IIIFRequest() r.baseurl = 'http://ex.org/a/' self.assertRaises(IIIFRequestBaseURI, r.split_url, 'http://ex.org/a/b') # matching baseurl, good request r = IIIFRequest(baseurl='http://ex.org/a/') r.identifier = None r.split_url('http://ex.org/a/b/full/full/0/native') self.assertEqual(r.identifier, 'b') self.assertEqual(r.region, 'full') self.assertEqual(r.size, 'full') # matching baseurl, insert id, good request r = IIIFRequest(baseurl='http://ex.org/a/') r.identifier = 'b' r.split_url('http://ex.org/a/full/full/0/native') self.assertEqual(r.identifier, 'b') self.assertEqual(r.region, 'full') self.assertEqual(r.size, 'full') # matching baseurl, too many segments r = IIIFRequest(baseurl='http://ex.org/a/') self.assertRaises(IIIFRequestError, r.split_url, 'http://ex.org/a/1/2/3/4/5/6')
def test19_split_url(self): # mismatching baseurl r = IIIFRequest() r.baseurl = 'http://ex.org/a/' self.assertRaises( IIIFError, r.split_url, 'http://other.base.url/' ) # matching baseurl, but bad request r = IIIFRequest() r.baseurl = 'http://ex.org/a/' self.assertRaises( IIIFRequestBaseURI , r.split_url, 'http://ex.org/a/b' ) # matching baseurl, good request r = IIIFRequest() r.baseurl = 'http://ex.org/a/' r.identifier = None r.split_url('http://ex.org/a/b/full/full/0/native') self.assertEqual( r.identifier, 'b' ) self.assertEqual( r.region, 'full' ) self.assertEqual( r.size, 'full' ) # matching baseurl, insert id, good request r = IIIFRequest() r.baseurl = 'http://ex.org/a/' r.identifier = 'b' r.split_url('http://ex.org/a/full/full/0/native') self.assertEqual( r.identifier, 'b' ) self.assertEqual( r.region, 'full' ) self.assertEqual( r.size, 'full' ) # matching baseurl, too many segments r = IIIFRequest() r.baseurl = 'http://ex.org/a/' self.assertRaises( IIIFError, r.split_url, 'http://ex.org/a/1/2/3/4/5/6' ) # api_version=1.0, format=xyz -> bad r = IIIFRequest(api_version='1.0') r.baseurl = 'http://ex.org/a/' self.assertRaises( IIIFError, r.split_url, 'http://ex.org/a/b/info.xyz' ) # api_version=2.1, format=xml -> bad r = IIIFRequest(api_version='2.1') r.baseurl = 'http://ex.org/a/' self.assertRaises( IIIFError, r.split_url, 'http://ex.org/a/b/info.xml' ) # api_version=2.1, format=xyz -> bad r = IIIFRequest(api_version='2.1') r.baseurl = 'http://ex.org/a/' self.assertRaises( IIIFError, r.split_url, 'http://ex.org/a/b/info.xyz' )
def test12_decode_good(self): """Decoding examples that should work.""" r = IIIFRequest(api_version='2.1', baseurl='1.1_netpbm/a/') r.split_url('1.1_netpbm/a/b/full/full/0/default') self.assertEqual(r.identifier, 'b') # id with slashes in it r = IIIFRequest(api_version='2.1', allow_slashes_in_identifier=True) r.split_url('a/b/c/full/full/0/default') self.assertFalse(r.info) self.assertEqual(r.identifier, 'a/b/c') r = IIIFRequest(api_version='2.1', allow_slashes_in_identifier=True) r.split_url('a/b/info.json') self.assertTrue(r.info) self.assertEqual(r.identifier, 'a/b')