def setUp(self): httpretty.register_uri( httpretty.GET, 'https://registry.cdlib.org/api/v1/', body= '''{"campus": {"list_endpoint": "/api/v1/campus/", "schema": "/api/v1/campus/schema/"}, "collection": {"list_endpoint": "/api/v1/collection/", "schema": "/api/v1/collection/schema/"}, "repository": {"list_endpoint": "/api/v1/repository/", "schema": "/api/v1/repository/schema/"}}''' ) self.registry = Registry()
class RegistryApiTestCase(TestCase): '''Test that the registry api works for our purposes''' @httpretty.activate def setUp(self): httpretty.register_uri(httpretty.GET, 'https://registry.cdlib.org/api/v1/', body='''{"campus": {"list_endpoint": "/api/v1/campus/", "schema": "/api/v1/campus/schema/"}, "collection": {"list_endpoint": "/api/v1/collection/", "schema": "/api/v1/collection/schema/"}, "repository": {"list_endpoint": "/api/v1/repository/", "schema": "/api/v1/repository/schema/"}}''') self.registry = Registry() def testRegistryListEndpoints(self): # use set so order independent self.assertEqual(set(self.registry.endpoints.keys()), set(['collection', 'repository', 'campus'])) self.assertRaises(ValueError, self.registry.resource_iter, 'x') @httpretty.activate def testResourceIteratorOnePage(self): '''Test when less than one page worth of objects fetched''' httpretty.register_uri(httpretty.GET, 'https://registry.cdlib.org/api/v1/campus/', body=open(DIR_FIXTURES+'/registry_api_campus.json').read()) l = [] for c in self.registry.resource_iter('campus'): l.append(c) self.assertEqual(len(l), 10) self.assertEqual(l[0]['slug'], 'UCB') @httpretty.activate def testResourceIteratoreMultiPage(self): '''Test when less than one page worth of objects fetched''' httpretty.register_uri(httpretty.GET, 'https://registry.cdlib.org/api/v1/repository/?limit=20&offset=20', body=open(DIR_FIXTURES+'/registry_api_repository-page-2.json').read()) httpretty.register_uri(httpretty.GET, 'https://registry.cdlib.org/api/v1/repository/', body=open(DIR_FIXTURES+'/registry_api_repository.json').read()) riter = self.registry.resource_iter('repository') self.assertEqual(riter.url, 'https://registry.cdlib.org/api/v1/repository/') self.assertEqual(riter.path_next, '/api/v1/repository/?limit=20&offset=20') r = '' for x in range(0, 38): r = riter.next() self.assertFalse(isinstance(r, Collection)) self.assertEqual(r['resource_uri'], '/api/v1/repository/42/') self.assertEqual(riter.url, 'https://registry.cdlib.org/api/v1/repository/?limit=20&offset=20') self.assertEqual(riter.path_next, None) self.assertRaises(StopIteration, riter.next) @httpretty.activate def testResourceIteratorReturnsCollection(self): '''Test that the resource iterator returns a Collection object for library collection resources''' httpretty.register_uri(httpretty.GET, 'https://registry.cdlib.org/api/v1/collection/', body=open(DIR_FIXTURES+'/registry_api_collection.json').read()) riter = self.registry.resource_iter('collection') c = riter.next() self.assertTrue(isinstance(c, Collection)) self.assertTrue(hasattr(c, 'auth')) self.assertEqual(c.auth, None) @httpretty.activate def testNuxeoCollectionAuth(self): '''Test that a Nuxeo harvest collection returns an authentication tuple, not None ''' httpretty.register_uri(httpretty.GET, 'https://registry.cdlib.org/api/v1/collection/19', body=open(DIR_FIXTURES+'/registry_api_collection_nuxeo.json').read()) c = Collection('https://registry.cdlib.org/api/v1/collection/19') self.assertTrue(c.harvest_type, 'NUX') defaultrc = """\ [nuxeo_account] user = TestUser password = TestPass [platform_importer] base = http://localhost:8080/nuxeo/site/fileImporter """ with patch('__builtin__.open') as fakeopen: fakeopen.return_value = StringIO.StringIO(defaultrc) self.assertEqual(c.auth[0], 'TestUser') self.assertEqual(c.auth[1], 'TestPass')
def setUp(self): httpretty.register_uri(httpretty.GET, 'https://registry.cdlib.org/api/v1/', body='''{"campus": {"list_endpoint": "/api/v1/campus/", "schema": "/api/v1/campus/schema/"}, "collection": {"list_endpoint": "/api/v1/collection/", "schema": "/api/v1/collection/schema/"}, "repository": {"list_endpoint": "/api/v1/repository/", "schema": "/api/v1/repository/schema/"}}''') self.registry = Registry()
class RegistryApiTestCase(TestCase): '''Test that the registry api works for our purposes''' @httpretty.activate def setUp(self): httpretty.register_uri( httpretty.GET, 'https://registry.cdlib.org/api/v1/', body= '''{"campus": {"list_endpoint": "/api/v1/campus/", "schema": "/api/v1/campus/schema/"}, "collection": {"list_endpoint": "/api/v1/collection/", "schema": "/api/v1/collection/schema/"}, "repository": {"list_endpoint": "/api/v1/repository/", "schema": "/api/v1/repository/schema/"}}''' ) self.registry = Registry() def testRegistryListEndpoints(self): # use set so order independent self.assertEqual(set(self.registry.endpoints.keys()), set(['collection', 'repository', 'campus'])) self.assertRaises(ValueError, self.registry.resource_iter, 'x') @httpretty.activate def testResourceIteratorOnePage(self): '''Test when less than one page worth of objects fetched''' httpretty.register_uri(httpretty.GET, 'https://registry.cdlib.org/api/v1/campus/', body=open(DIR_FIXTURES + '/registry_api_campus.json').read()) l = [] for c in self.registry.resource_iter('campus'): l.append(c) self.assertEqual(len(l), 10) self.assertEqual(l[0]['slug'], 'UCB') @httpretty.activate def testResourceIteratoreMultiPage(self): '''Test when less than one page worth of objects fetched''' httpretty.register_uri( httpretty.GET, 'https://registry.cdlib.org/api/v1/repository/?limit=20&offset=20', body=open(DIR_FIXTURES + '/registry_api_repository-page-2.json').read()) httpretty.register_uri( httpretty.GET, 'https://registry.cdlib.org/api/v1/repository/', body=open(DIR_FIXTURES + '/registry_api_repository.json').read()) riter = self.registry.resource_iter('repository') self.assertEqual(riter.url, 'https://registry.cdlib.org/api/v1/repository/') self.assertEqual(riter.path_next, '/api/v1/repository/?limit=20&offset=20') r = '' for x in range(0, 38): r = riter.next() self.assertFalse(isinstance(r, Collection)) self.assertEqual(r['resource_uri'], '/api/v1/repository/42/') self.assertEqual( riter.url, 'https://registry.cdlib.org/api/v1/repository/?limit=20&offset=20') self.assertEqual(riter.path_next, None) self.assertRaises(StopIteration, riter.next) @httpretty.activate def testResourceIteratorReturnsCollection(self): '''Test that the resource iterator returns a Collection object for library collection resources''' httpretty.register_uri( httpretty.GET, 'https://registry.cdlib.org/api/v1/collection/', body=open(DIR_FIXTURES + '/registry_api_collection.json').read()) riter = self.registry.resource_iter('collection') c = riter.next() self.assertTrue(isinstance(c, Collection)) self.assertTrue(hasattr(c, 'auth')) self.assertEqual(c.auth, None) @httpretty.activate def testNuxeoCollectionAuth(self): '''Test that a Nuxeo harvest collection returns an authentication tuple, not None ''' httpretty.register_uri( httpretty.GET, 'https://registry.cdlib.org/api/v1/collection/19', body=open(DIR_FIXTURES + '/registry_api_collection_nuxeo.json').read()) c = Collection('https://registry.cdlib.org/api/v1/collection/19') self.assertTrue(c.harvest_type, 'NUX') defaultrc = """\ [nuxeo_account] user = TestUser password = TestPass [platform_importer] base = http://localhost:8080/nuxeo/site/fileImporter """ with patch('__builtin__.open') as fakeopen: fakeopen.return_value = StringIO.StringIO(defaultrc) self.assertEqual(c.auth[0], 'TestUser') self.assertEqual(c.auth[1], 'TestPass')