Beispiel #1
0
 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()
Beispiel #4
0
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')