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()
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']
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)
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, [])
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'), '')
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()
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()
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()
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()
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']))
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)
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()
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()
def test_get_by_name(self): pub = Publisher.get_by_name(self.publisher) self.assertEqual(pub.name, self.publisher)
def test_should_return_None_if_publisher_not_found(self): info = Publisher.get_publisher_info("not_found") self.assertIsNone(info)
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'])
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()