示例#1
0
 def test_return_generic_error_if_descriptor_is_not_json(self):
     descriptor = 'test description'
     with self.app.app_context():
         publisher = Publisher(name='pub')
         metadata = Package(name=self.package)
         metadata.descriptor = descriptor
         publisher.packages.append(metadata)
         db.session.add(publisher)
         db.session.commit()
     response = self.client\
         .get('/api/package/%s/%s' % ('pub', self.package))
     data = json.loads(response.data)
     self.assertEqual(response.status_code, 500)
     self.assertEqual(data['error_code'], 'GENERIC_ERROR')
 def setUp(self):
     self.app = create_app()
     self.client = self.app.test_client()
     with self.app.test_request_context():
         db.drop_all()
         db.create_all()
         publisher1 = Publisher(name=self.publisher_one,
                                title="publisher one",
                                description="This is publisher one",
                                country="country one",
                                email="*****@*****.**",
                                phone="123",
                                contact_public=True)
         publisher2 = Publisher(name=self.publisher_two,
                                title="publisher two",
                                description="This is publisher two",
                                country="country two",
                                email="*****@*****.**",
                                phone="321",
                                contact_public=False)
         db.session.add(publisher1)
         db.session.add(publisher2)
         db.session.commit()
示例#3
0
 def test_return_empty_string_if_readme_not_there(self):
     descriptor = {'name': 'test description'}
     with self.app.app_context():
         publisher = Publisher(name=self.publisher)
         metadata = Package(name=self.package)
         metadata.descriptor = json.dumps(descriptor)
         publisher.packages.append(metadata)
         db.session.add(publisher)
         db.session.commit()
     response = self.client.get('/api/package/%s/%s'%\
                                (self.publisher, self.package))
     data = json.loads(response.data)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(data['readme'], '')
    def setUp(self):
        self.app = create_app()
        self.client = self.app.test_client()
        with self.app.app_context():
            db.drop_all()
            db.create_all()
            self.user = User()
            self.user.id = self.user_id
            self.user.email, self.user.name, self.user.secret = \
                '*****@*****.**', self.publisher_name, 'super_secret'

            self.user_member = User()
            self.user_member.id = self.user_id_member
            self.user_member.email, self.user_member.name, self.user_member.secret = \
                '*****@*****.**', self.user_member_name, 'super_secret'

            self.publisher = Publisher(name=self.publisher_name)

            association = PublisherUser(role=UserRoleEnum.owner)
            association.publisher = self.publisher

            association1 = PublisherUser(role=UserRoleEnum.member)
            association1.publisher = self.publisher

            metadata = Package(name=self.package)
            self.publisher.packages.append(metadata)
            self.user.publishers.append(association)
            self.user_member.publishers.append(association1)

            db.session.add(self.user)
            db.session.add(self.user_member)
            db.session.commit()
        response = self.client.post(self.jwt_url,
                                    data=json.dumps({
                                        'username': self.publisher_name,
                                        'secret': 'super_secret'
                                    }),
                                    content_type='application/json')
        data = json.loads(response.data)
        self.jwt = data['token']

        response = self.client.post(self.jwt_url,
                                    data=json.dumps({
                                       'username': self.user_member_name,
                                       'secret': 'super_secret'
                                   }),
                                   content_type='application/json')
        data = json.loads(response.data)
        self.jwt_member = data['token']
示例#5
0
def make_fixtures(app, package, publisher, user_id):
    with app.app_context():
        user = User(
                id=user_id,
                email='*****@*****.**',
                name=publisher,
                secret='super_secret'
                )
        pub = Publisher(name=publisher)
        pub.packages.append(Package(name=package))
        association = PublisherUser(role=UserRoleEnum.owner)
        association.publisher = pub
        user.publishers.append(association)

        user1 = User(id=2, name='test1',
                     secret='super_secret1', email="*****@*****.**")
        pub1 = Publisher(name='test1')
        association1 = PublisherUser(role=UserRoleEnum.owner)
        association1.publisher = pub1
        user1.publishers.append(association1)

        db.session.add(user)
        db.session.add(user1)
        db.session.commit()
 def setUp(self):
     self.publisher = 'test_publisher'
     self.package1 = 'test_package1'
     self.package2 = 'test_package2'
     self.app = create_app()
     self.client = self.app.test_client()
     with self.app.app_context():
         db.drop_all()
         db.create_all()
         publisher = Publisher(name=self.publisher)
         metadata1 = Package(name=self.package1)
         metadata2 = Package(name=self.package2)
         publisher.packages.append(metadata1)
         publisher.packages.append(metadata2)
         db.session.add(publisher)
         db.session.commit()
    def test_data_package_page_load_without_views(self):
        descriptor = {"data": [], "resources": []}
        with self.app.app_context():
            publisher = Publisher(name=self.publisher)
            package = Package(name=self.package, descriptor=descriptor)
            publisher.packages.append(package)
            db.session.add(publisher)
            db.session.commit()
        rv = self.client.get('/{publisher}/{package}'.\
                             format(publisher=self.publisher,
                                    package=self.package))
        self.assertNotEqual(404, rv.status_code)
        self.assertIn('DOWNLOAD FILES', rv.data.decode("utf8"))

        rv = self.client.get('/non-existing/demo-package')
        self.assertEqual(404, rv.status_code)
    def test_data_package_page(self):
        descriptor = json.loads(open('fixtures/datapackage.json').read())
        with self.app.app_context():
            publisher = Publisher(name=self.publisher)
            package = Package(name=self.package, descriptor=descriptor)
            publisher.packages.append(package)
            db.session.add(publisher)
            db.session.commit()
        rv = self.client.get('/{publisher}/{package}'.\
                             format(publisher=self.publisher,
                                    package=self.package))
        self.assertNotEqual(404, rv.status_code)
        self.assertIn('DOWNLOAD FILES', rv.data.decode("utf8"))

        rv = self.client.get('/non-existing/demo-package')
        self.assertEqual(404, rv.status_code)
示例#9
0
 def test_get_views_if_views_dont_exist(self):
     descriptor = {'name': 'test', 'resources': []}
     with self.app.app_context():
         db.drop_all()
         db.create_all()
         publisher = Publisher(name=self.publisher)
         metadata = Package(name=self.package)
         metadata.descriptor = json.dumps(descriptor)
         publisher.packages.append(metadata)
         db.session.add(publisher)
         db.session.commit()
     response = self.client.get('/api/package/%s/%s'%\
                                (self.publisher, self.package))
     catalog = Catalog(json.loads(response.data))
     views = catalog.get_views()
     self.assertEqual(views, [])
示例#10
0
 def test_adds_empty_readme_if_there_is_not(self):
     descriptor = {'name': 'test', 'resources': []}
     with self.app.app_context():
         db.drop_all()
         db.create_all()
         publisher = Publisher(name=self.publisher)
         metadata = Package(name=self.package)
         metadata.descriptor = json.dumps(descriptor)
         publisher.packages.append(metadata)
         db.session.add(publisher)
         db.session.commit()
     response = self.client.get('/api/package/%s/%s'%\
                                (self.publisher, self.package))
     catalog = Catalog(json.loads(response.data))
     dataset = catalog.construct_dataset()
     self.assertEqual(dataset.get('readme'), '')
示例#11
0
    def setUp(self):
        self.publisher = 'demo'
        self.package = 'demo-package'
        self.app = create_app()
        self.app.app_context().push()
        with self.app.test_request_context():
            db.drop_all()
            db.create_all()
            user = User(id=11, name=self.publisher, secret='supersecret')
            publisher = Publisher(name=self.publisher)
            association = PublisherUser(role=UserRoleEnum.owner)
            association.publisher = publisher
            user.publishers.append(association)

            db.session.add(user)
            db.session.commit()
def create_test_package(publisher='demo',
                        package='demo-package',
                        descriptor={},
                        readme=''):

    user = User(name=publisher)
    publisher = Publisher(name=publisher)
    association = PublisherUser(role=UserRoleEnum.owner)
    association.publisher = publisher
    user.publishers.append(association)

    package = Package(name=package, descriptor=descriptor, readme=readme)
    publisher.packages.append(package)

    db.session.add(user)
    db.session.commit()
示例#13
0
    def setUp(self):
        self.publisher = 'demo'
        self.package = 'demo-package'
        self.app = create_app()
        self.client = self.app.test_client()
        with self.app.app_context():
            db.drop_all()
            db.create_all()
            descriptor = json.loads(open('fixtures/datapackage.json').read())
            readme = open('fixtures/README.md').read()
            publisher = Publisher(name=self.publisher)
            metadata = Package(name=self.package)
            metadata.tags.append(PackageTag(descriptor=descriptor, readme=readme))

            publisher.packages.append(metadata)
            db.session.add(publisher)
            db.session.commit()
示例#14
0
def create_test_package(publisher='demo',
                        package='demo-package',
                        descriptor={}):

    user = User(name=publisher)
    publisher = Publisher(name=publisher)
    association = PublisherUser(role=UserRoleEnum.owner)
    association.publisher = publisher
    user.publishers.append(association)

    metadata = Package(name=package)
    tag = PackageTag(descriptor=descriptor)
    metadata.tags.append(tag)
    publisher.packages.append(metadata)

    db.session.add(user)
    db.session.commit()
示例#15
0
    def setUp(self):
        self.app = create_app()
        self.app.app_context().push()
        with self.app.test_request_context():
            db.drop_all()
            db.create_all()

            user = User(id=11,
                        name='test_user_id',
                        secret='supersecret',
                        auth0_id="123|auth0")
            publisher = Publisher(name='test_pub_id')
            association = PublisherUser(role=UserRoleEnum.owner)
            association.publisher = publisher
            user.publishers.append(association)

            db.session.add(user)
            db.session.commit()
示例#16
0
    def setUp(self):
        self.app = create_app()
        self.client = self.app.test_client()
        with self.app.app_context():
            db.drop_all()
            db.create_all()
            self.user = User()
            self.user.id = 1
            self.user.email, self.user.name, self.user.secret = \
                '*****@*****.**', self.publisher, 'super_secret'

            self.publisherObj = Publisher(name=self.publisher)

            association = PublisherUser(role=UserRoleEnum.owner)
            association.publisher = self.publisherObj
            self.user.publishers.append(association)

            db.session.add(self.user)
            db.session.commit()
    def test_should_return_20_result_if_limit_invalid(self):
        with self.app.test_request_context():
            pub = Publisher(name='big_publisher')
            for i in range(0, 30):
                pack = Package(name='pack{i}'.format(i=i))
                pack.tags.append(
                    PackageTag(descriptor={"title": "pack1 details one"},
                               readme="Big readme one"))
                pub.packages\
                    .append(pack)
            db.session.add(pub)
            db.session.commit()

        url = "/api/search/package?limit=lem"
        response = self.client.get(url)
        result = json.loads(response.data)
        self.assertEqual(200, response.status_code)
        # extra 6 packages from the setup so we expect 36 packages
        self.assertEqual(36, len(result['items']))
示例#18
0
 def test_construct_dataset(self):
     descriptor = json.loads(open('fixtures/datapackage.json').read())
     with self.app.app_context():
         db.drop_all()
         db.create_all()
         publisher = Publisher(name=self.publisher)
         metadata = Package(name=self.package)
         metadata.descriptor = json.dumps(descriptor)
         publisher.packages.append(metadata)
         db.session.add(publisher)
         db.session.commit()
     response = self.client.get('/api/package/%s/%s'%\
                                (self.publisher, self.package))
     catalog = Catalog(json.loads(response.data))
     dataset = catalog.construct_dataset()
     self.assertEqual(dataset.get('name'), descriptor.get('name'))
     self.assertEqual(dataset.get('owner'), self.publisher)
     self.assertIn('localurl', dataset.get('resources')[0])
     self.assertNotEqual(len(dataset.get('views')), 0)
 def test_return_all_metadata_is_there(self):
     descriptor = {'name': 'test description'}
     readme = 'README'
     with self.app.app_context():
         publisher = Publisher(name=self.publisher)
         package = Package(name=self.package,descriptor=descriptor,
                                         readme=readme)
         publisher.packages.append(package)
         db.session.add(publisher)
         db.session.commit()
     response = self.client.get('/api/package/%s/%s'%\
                                (self.publisher, self.package))
     data = json.loads(response.data)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(data['descriptor']['name'], 'test description')
     self.assertEqual(data['readme'], '<p>README</p>')
     self.assertEqual(data['short_readme'], 'README')
     self.assertEqual(data['id'], 1)
     self.assertEqual(data['name'], self.package)
     self.assertEqual(data['publisher'], self.publisher)
示例#20
0
def populate_db(auth0_id, email, user_name, full_name, secret):
    user = User.query.filter_by(name=user_name).first()

    publisher = Publisher.query.filter_by(name=user_name).first()
    if user is None:
        user = User()
        user.auth0_id, user.email, user.name, user.full_name, user.secret \
            = auth0_id, email, user_name, full_name, secret
        db.session.add(user)
        db.session.commit()

    if publisher is None:

        publisher = Publisher(name=user_name)

        association = PublisherUser(role=UserRoleEnum.owner)
        association.publisher = publisher
        user.publishers.append(association)

        db.session.add(user)
        db.session.commit()
示例#21
0
 def test_get_views(self):
     descriptor = {
         'name': 'test',
         'resources': [],
         'views': [{
             "type": "graph"
         }]
     }
     with self.app.app_context():
         db.drop_all()
         db.create_all()
         publisher = Publisher(name=self.publisher)
         metadata = Package(name=self.package)
         metadata.descriptor = json.dumps(descriptor)
         publisher.packages.append(metadata)
         db.session.add(publisher)
         db.session.commit()
     response = self.client.get('/api/package/%s/%s'%\
                                (self.publisher, self.package))
     catalog = Catalog(json.loads(response.data))
     views = catalog.get_views()
     self.assertNotEqual(len(views), 0)
     self.assertEqual(views[0].get('type'), 'graph')
    def setUp(self):
        self.app = create_app()
        self.client = self.app.test_client()
        with self.app.app_context():
            self.bucket_name = self.app.config['S3_BUCKET_NAME']
            db.drop_all()
            db.create_all()
            self.user = User()
            self.user.id = 1
            self.user.email, self.user.name, self.user.secret = \
                '*****@*****.**', self.publisher_name, 'super_secret'

            self.publisher = Publisher(name=self.publisher_name)

            association = PublisherUser(role=UserRoleEnum.owner)
            association.publisher = self.publisher

            metadata = Package(name=self.package)
            self.publisher.packages.append(metadata)
            self.user.publishers.append(association)

            db.session.add(self.user)
            db.session.commit()
示例#23
0
 def test_get_by_name(self):
     pub = Publisher.get_by_name(self.publisher)
     self.assertEqual(pub.name, self.publisher)
示例#24
0
 def test_should_return_None_if_publisher_not_found(self):
     info = Publisher.get_publisher_info("not_found")
     self.assertIsNone(info)
示例#25
0
 def test_should_return_contact_info_if_public(self):
     info = Publisher.get_publisher_info(self.publisher_one)
     self.assertIn("contact", info)
     self.assertEqual(self.publisher_one, info['name'])
示例#26
0
 def test_get_by_name_returns_none_if_no_publisher(self):
     pub = Publisher.get_by_name('not_a_publisher')
     self.assertIsNone(pub)
    def setUp(self):
        self.publisher = 'demo'
        self.package = 'demo-package'
        self.publisher_one = 'test_publisher1'
        self.publisher_two = 'test_publisher2'
        self.package_one = 'test_package1'
        self.package_two = 'test_package2'
        self.package_three = 'test_package3'
        self.descriptor = json.loads(open('fixtures/datapackage.json').read())
        self.readme = 'README'
        self.app = create_app()
        self.app.app_context().push()

        with self.app.test_request_context():
            db.drop_all()
            db.create_all()

            create_test_package(self.publisher,
                                self.package,
                                descriptor=self.descriptor,
                                readme=self.readme)

            user1 = User(name=self.publisher_one)
            publisher1 = Publisher(name=self.publisher_one)
            association1 = PublisherUser(role=UserRoleEnum.owner)
            association1.publisher = publisher1
            user1.publishers.append(association1)

            user2 = User(name=self.publisher_two)
            publisher2 = Publisher(name=self.publisher_two)
            association2 = PublisherUser(role=UserRoleEnum.owner)
            association2.publisher = publisher2
            user2.publishers.append(association2)

            metadata1 = Package(name=self.package_one)
            tag1 = PackageTag(descriptor=dict(name='test_one'))
            metadata1.tags.append(tag1)
            publisher1.packages.append(metadata1)

            metadata2 = Package(name=self.package_two)
            tag2 = PackageTag(descriptor=dict(name='test_two'))
            metadata2.tags.append(tag2)
            publisher1.packages.append(metadata2)

            metadata3 = Package(name=self.package_one)
            tag3 = PackageTag(descriptor=dict(name='test_three'))
            metadata3.tags.append(tag3)
            publisher2.packages.append(metadata3)

            metadata4 = Package(name=self.package_two)
            tag4 = PackageTag(descriptor=dict(name='test_four'))
            metadata4.tags.append(tag4)
            publisher2.packages.append(metadata4)

            metadata5 = Package(name=self.package_three)
            tag5 = PackageTag(descriptor=dict(name='test_four'))
            metadata5.tags.append(tag5)
            publisher2.packages.append(metadata5)

            db.session.add(user1)
            db.session.add(user2)

            db.session.commit()