def test_get_dashboard_view__admin_can_access(self):
        # arrange
        dashboard_to_access = create_dashboard_to_db(
            owners=[], slices=[create_slice_to_db()], published=False)
        self.login("admin")

        # act
        response = self.get_dashboard_view_response(dashboard_to_access)

        # assert
        self.assert200(response)
 def _create_sample_dashboards_with_owner_access(self):
     username = random_str()
     new_role = f"role_{random_str()}"
     owner = self.create_user_with_roles(username, [new_role],
                                         should_create_roles=True)
     database = create_database_to_db()
     table = create_datasource_table_to_db(db_id=database.id,
                                           owners=[owner])
     first_dash = create_dashboard_to_db(
         owners=[owner],
         slices=[create_slice_to_db(datasource_id=table.id)])
     second_dash = create_dashboard_to_db(
         owners=[owner],
         slices=[create_slice_to_db(datasource_id=table.id)])
     owned_dashboards = [first_dash, second_dash]
     not_owned_dashboards = [
         create_dashboard_to_db(
             slices=[create_slice_to_db(datasource_id=table.id)],
             published=True)
     ]
     self.login(username)
     return not_owned_dashboards, owned_dashboards
    def test_get_dashboards_api__admin_get_all_dashboards(self):
        # arrange
        create_dashboard_to_db(owners=[],
                               slices=[create_slice_to_db()],
                               published=False)
        dashboard_counts = count_dashboards()

        self.login("admin")

        # act
        response = self.get_dashboards_api_response()

        # assert
        self.assert_dashboards_api_response(response, dashboard_counts)
    def test_get_dashboard_view__owner_can_access(self):
        # arrange
        username = random_str()
        new_role = f"role_{random_str()}"
        owner = self.create_user_with_roles(username, [new_role],
                                            should_create_roles=True)
        dashboard_to_access = create_dashboard_to_db(
            owners=[owner], slices=[create_slice_to_db()], published=False)
        self.login(username)

        # act
        response = self.get_dashboard_view_response(dashboard_to_access)

        # assert
        self.assert200(response)
    def test_get_dashboard_view__public_user_access_with_dashboard_permission(
            self):
        # arrange
        dashboard_to_access = create_dashboard_to_db(
            published=True, slices=[create_slice_to_db()])
        grant_access_to_dashboard(dashboard_to_access, "Public")

        self.logout()

        # act
        response = self.get_dashboard_view_response(dashboard_to_access)

        # assert
        self.assert200(response)

        # post
        revoke_access_to_dashboard(dashboard_to_access, "Public")