Filter Druid Datasources by user permissions. (#1090)

This commit is contained in:
Bogdan
2016-09-09 17:12:09 -07:00
committed by GitHub
parent 6aadc6ec13
commit c20ee0c129
2 changed files with 42 additions and 0 deletions

View File

@@ -280,6 +280,34 @@ class CoreTests(CaravelTestCase):
["longSum", "sum", "unique"])
assert resp.status_code == 201
def test_filter_druid_datasource(self):
gamma_ds = DruidDatasource(
datasource_name="datasource_for_gamma",
)
db.session.add(gamma_ds)
no_gamma_ds = DruidDatasource(
datasource_name="datasource_not_for_gamma",
)
db.session.add(no_gamma_ds)
db.session.commit()
utils.merge_perm(sm, 'datasource_access', gamma_ds.perm)
utils.merge_perm(sm, 'datasource_access', no_gamma_ds.perm)
db.session.commit()
gamma_ds_permission_view = (
db.session.query(ab_models.PermissionView)
.join(ab_models.ViewMenu)
.filter(ab_models.ViewMenu.name == gamma_ds.perm)
.first()
)
sm.add_permission_role(sm.find_role('Gamma'), gamma_ds_permission_view)
self.login(username='gamma')
url = '/druiddatasourcemodelview/list/'
resp = self.client.get(url, follow_redirects=True)
assert 'datasource_for_gamma' in resp.data.decode('utf-8')
assert 'datasource_not_for_gamma' not in resp.data.decode('utf-8')
def test_gamma(self):
self.login(username='gamma')
resp = self.client.get('/slicemodelview/list/')