def testDeleteFailsForNonAdminWithRestricted(self): provided_data = '{"type": "sample"}' new_dashboard = dashboard.Dashboard(data=provided_data) new_dashboard.put() self.config.grant_save_to_public = False self.config.put() self.assertRaisesRegexp( dashboard.SecurityError, 'The current user is not authorized to delete dashboards', new_dashboard.key.delete)
def testEditDashboardOwner(self): original_data = '{"title": "untitled"}' new_owner = '*****@*****.**' dashboard_id = dashboard_model.Dashboard( created_by=users.get_current_user(), data=original_data).put().id() updated_data = ('{{"title": "untitled", "owner": "{owner:}"}}').format( owner=new_owner) self.app.post(url='/dashboard/edit-owner', status=200, params=[('id', dashboard_id), ('email', new_owner)]) stored_dashboard = dashboard_model.Dashboard.get_by_id(dashboard_id) self.assertJsonEqual(stored_dashboard.data, updated_data)
def testEditDashboardMissingParameters(self): expected_response_id = {'message': 'The "id" parameter is required.'} expected_response_data = { 'message': 'The "data" parameter is required.' } resp = self.app.post(url='/dashboard/edit', status=400) self.assertEqual(resp.json, expected_response_id) dashboard_model.Dashboard(created_by=users.get_current_user()).put() resp = self.app.post(url='/dashboard/edit', status=400, params=[('id', 1)]) self.assertEqual(resp.json, expected_response_data)
def testCopyDashboard(self): provided_data = '{{"title": "foo", "owner": "{owner:}"}}'.format( owner=DEFAULT_USERS[0]['email']) dashboard_id = dashboard_model.Dashboard( created_by=users.get_current_user(), data=provided_data).put().id() resp = self.app.post(url='/dashboard/copy', params=[('id', dashboard_id)]) new_id = resp.json['id'] expected_response = {'id': new_id} self.assertNotEqual(new_id, dashboard_id) self.assertDictEqual(resp.json, expected_response)
def testEditDashboard(self): original_data = '{"title": "foo"}' dashboard_id = dashboard_model.Dashboard( created_by=users.get_current_user(), data=original_data).put().id() updated_data = { "id": dashboard_id, "writers": [], "title": "bar", "owner": DEFAULT_USERS[0]['email'] } self.app.post(url='/dashboard/edit', status=200, params=[('id', dashboard_id), ('data', json.dumps(updated_data))]) stored_dashboard = dashboard_model.Dashboard.get_by_id(dashboard_id) self.assertJsonEqual(stored_dashboard.data, updated_data)
def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() self.config = explorer_config.ExplorerConfigModel.Get() self.config.grant_view_to_public = True self.config.grant_save_to_public = True self.config.put() self.provided_query = 'SELECT foo FROM bar' gae_test_util.setCurrentUser(self.testbed, is_admin=True) dashboard_json = json.dumps({ 'children': [{ 'container': { 'children': [{ 'id': '1' }, { 'id': '2' }] } }, { 'container': { 'children': [{ 'id': '3', 'datasource': { 'query': self.provided_query } }, { 'id': '4' }] } }] }) self.dashboard_model = dashboard.Dashboard(data=dashboard_json) self.dashboard_model.put() gae_test_util.setCurrentUser(self.testbed, is_admin=False)
def testEditDashboardInvalidParameters(self): message = 'The "id" parameter must be an integer. Found "invalid".' expected_response = {'message': message} dashboard_model.Dashboard(created_by=users.get_current_user()).put() resp = self.app.post(url='/dashboard/edit', status=400, params=[('id', 'invalid'), ('data', { 'data': 'valid' })]) self.assertEqual(resp.json, expected_response) message = 'The "data" parameter must be valid JSON. Found:\ninvalid' expected_response = {'message': message} resp = self.app.post(url='/dashboard/edit', status=400, params=[('id', 1), ('data', 'invalid')]) self.assertEqual(resp.json, expected_response)