Beispiel #1
0
    def test_get_dashboards_api__public_user_get_only_published_permitted_dashboards(
        self,
    ):
        # arrange
        published_dashboards = [
            create_dashboard_to_db(published=True),
            create_dashboard_to_db(published=True),
        ]
        draft_dashboards = [
            create_dashboard_to_db(published=False),
            create_dashboard_to_db(published=False),
        ]

        for dash in published_dashboards + draft_dashboards:
            grant_access_to_dashboard(dash, "Public")

        self.logout()

        # act
        response = self.get_dashboards_api_response()

        # assert
        self.assert_dashboards_api_response(
            response, len(published_dashboards), published_dashboards, draft_dashboards,
        )

        # post
        for dash in published_dashboards + draft_dashboards:
            revoke_access_to_dashboard(dash, "Public")
    def test_get_dashboards_api__user_get_only_published_permitted_dashboards(
            self):
        username = random_str()
        new_role = f"role_{random_str()}"
        self.create_user_with_roles(username, [new_role],
                                    should_create_roles=True)
        # arrange
        published_dashboards = [
            create_dashboard_to_db(published=True),
            create_dashboard_to_db(published=True),
        ]
        not_published_dashboards = [
            create_dashboard_to_db(published=False),
            create_dashboard_to_db(published=False),
        ]

        for dash in published_dashboards + not_published_dashboards:
            grant_access_to_dashboard(dash, new_role)

        self.login(username)

        # act
        response = self.get_dashboards_api_response()

        # assert
        self.assert_dashboards_api_response(
            response,
            len(published_dashboards),
            published_dashboards,
            not_published_dashboards,
        )

        # post
        for dash in published_dashboards + not_published_dashboards:
            revoke_access_to_dashboard(dash, new_role)
    def test_get_dashboards_list__owner_get_all_owned_dashboards(self):
        # arrange
        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)

        # act
        response = self.get_dashboards_list_response()

        # assert
        self.assert_dashboards_list_view_response(response, 2,
                                                  owned_dashboards,
                                                  not_owned_dashboards)
Beispiel #4
0
    def test_get_dashboards_list__public_user_without_any_permissions_get_empty_list(
        self, ):
        create_dashboard_to_db(published=True)

        # act
        response = self.get_dashboards_list_response()

        # assert
        self.assert_dashboards_list_view_response(response, 0)
Beispiel #5
0
    def test_get_dashboards_api__user_without_any_permissions_get_empty_list(self):
        username = random_str()
        new_role = f"role_{random_str()}"
        self.create_user_with_roles(username, [new_role], should_create_roles=True)
        create_dashboard_to_db(published=True)
        self.login(username)

        # act
        response = self.get_dashboards_api_response()

        # assert
        self.assert_dashboards_api_response(response, 0)
Beispiel #6
0
    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)
Beispiel #7
0
 def _create_sample_only_published_dashboard_with_roles(self):
     username = random_str()
     new_role = f"role_{random_str()}"
     self.create_user_with_roles(username, [new_role], should_create_roles=True)
     published_dashboards = [
         create_dashboard_to_db(published=True),
         create_dashboard_to_db(published=True),
     ]
     draft_dashboards = [
         create_dashboard_to_db(published=False),
         create_dashboard_to_db(published=False),
     ]
     for dash in published_dashboards + draft_dashboards:
         grant_access_to_dashboard(dash, new_role)
     self.login(username)
     return new_role, draft_dashboards, published_dashboards
Beispiel #8
0
    def test_get_dashboard_view__user_access_with_dashboard_permission(self):
        # arrange

        username = random_str()
        new_role = f"role_{random_str()}"
        self.create_user_with_roles(username, [new_role],
                                    should_create_roles=True)

        slice = (db.session.query(Slice).filter_by(
            slice_name="Girl Name Cloud").one_or_none())
        dashboard_to_access = create_dashboard_to_db(published=True,
                                                     slices=[slice])
        self.login(username)
        grant_access_to_dashboard(dashboard_to_access, new_role)

        # act
        response = self.get_dashboard_view_response(dashboard_to_access)

        # assert
        self.assert_dashboard_view_response(response, dashboard_to_access)

        request_payload = get_query_context("birth_names")
        rv = self.post_assert_metric(CHART_DATA_URI, request_payload, "data")
        self.assertEqual(rv.status_code, 200)

        # post
        revoke_access_to_dashboard(dashboard_to_access, new_role)
Beispiel #9
0
    def test_get_dashboard_view__public_user_can_not_access_without_permission(self):
        dashboard_to_access = create_dashboard_to_db(published=True)
        self.logout()

        # act
        response = self.get_dashboard_view_response(dashboard_to_access)

        # assert
        self.assert403(response)
Beispiel #10
0
    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.assert_dashboard_view_response(response, dashboard_to_access)
Beispiel #11
0
    def test_get_dashboard_view__user_can_not_access_without_permission(self):
        username = random_str()
        new_role = f"role_{random_str()}"
        self.create_user_with_roles(username, [new_role], should_create_roles=True)
        dashboard_to_access = create_dashboard_to_db(published=True)
        self.login(username)

        # act
        response = self.get_dashboard_view_response(dashboard_to_access)

        # assert
        self.assert403(response)
Beispiel #12
0
 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
Beispiel #13
0
    def test_get_dashboard_view__public_user_with_dashboard_permission_can_not_access_draft(
        self, ):
        # arrange
        dashboard_to_access = create_dashboard_to_db(published=False)
        grant_access_to_dashboard(dashboard_to_access, "Public")
        self.logout()
        # act
        response = self.get_dashboard_view_response(dashboard_to_access)

        # assert
        self.assert403(response)

        # post
        revoke_access_to_dashboard(dashboard_to_access, "Public")
Beispiel #14
0
    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.assert_dashboard_view_response(response, dashboard_to_access)
Beispiel #15
0
    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.assert_dashboard_view_response(response, dashboard_to_access)

        # post
        revoke_access_to_dashboard(dashboard_to_access, "Public")
Beispiel #16
0
    def test_get_dashboard_view__user_with_dashboard_permission_can_not_access_draft(
        self,
    ):
        # arrange
        dashboard_to_access = create_dashboard_to_db(published=False)
        username = random_str()
        new_role = f"role_{random_str()}"
        self.create_user_with_roles(username, [new_role], should_create_roles=True)
        grant_access_to_dashboard(dashboard_to_access, new_role)
        self.login(username)

        # act
        response = self.get_dashboard_view_response(dashboard_to_access)

        # assert
        self.assert403(response)

        # post
        revoke_access_to_dashboard(dashboard_to_access, new_role)
Beispiel #17
0
    def test_get_dashboard_view__user_access_with_dashboard_permission(self):
        # arrange

        username = random_str()
        new_role = f"role_{random_str()}"
        self.create_user_with_roles(username, [new_role], should_create_roles=True)

        dashboard_to_access = create_dashboard_to_db(
            published=True, slices=[create_slice_to_db()]
        )
        self.login(username)
        grant_access_to_dashboard(dashboard_to_access, new_role)

        # act
        response = self.get_dashboard_view_response(dashboard_to_access)

        # assert
        self.assert_dashboard_view_response(response, dashboard_to_access)

        # post
        revoke_access_to_dashboard(dashboard_to_access, new_role)