예제 #1
0
    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)
예제 #2
0
    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)
예제 #6
0
    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)