mirror of
https://github.com/apache/superset.git
synced 2026-05-12 11:25:56 +00:00
feat: Embedded dashboard configuration (#19364)
* embedded dashboard model
* embedded dashboard endpoints
* DRY up using the with_dashboard decorator elsewhere
* wip
* check feature flags and permissions
* wip
* sdk
* urls
* dao option for id column
* got it working
* Update superset/embedded/view.py
* use the curator check
* put back old endpoint, for now
* allow access by either embedded.uuid or dashboard.id
* keep the old endpoint around, for the time being
* openapi
* lint
* lint
* lint
* test stuff
* lint, test
* typo
* Update superset-frontend/src/embedded/index.tsx
* Update superset-frontend/src/embedded/index.tsx
* fix tests
* bump sdk
(cherry picked from commit 8e29ec5a66)
This commit is contained in:
committed by
Ville Brofeldt
parent
a7ee677154
commit
795ed3c719
@@ -388,7 +388,14 @@ class TestDashboardApi(SupersetTestCase, ApiOwnersTestCaseMixin, InsertChartMixi
|
||||
rv = self.get_assert_metric(uri, "info")
|
||||
data = json.loads(rv.data.decode("utf-8"))
|
||||
assert rv.status_code == 200
|
||||
assert set(data["permissions"]) == {"can_read", "can_write", "can_export"}
|
||||
assert set(data["permissions"]) == {
|
||||
"can_read",
|
||||
"can_write",
|
||||
"can_export",
|
||||
"can_get_embedded",
|
||||
"can_delete_embedded",
|
||||
"can_set_embedded",
|
||||
}
|
||||
|
||||
@pytest.mark.usefixtures("load_world_bank_dashboard_with_slices")
|
||||
def test_get_dashboard_not_found(self):
|
||||
@@ -1722,3 +1729,58 @@ class TestDashboardApi(SupersetTestCase, ApiOwnersTestCaseMixin, InsertChartMixi
|
||||
|
||||
response_roles = [result["text"] for result in response["result"]]
|
||||
assert "Alpha" in response_roles
|
||||
|
||||
@pytest.mark.usefixtures("load_world_bank_dashboard_with_slices")
|
||||
def test_embedded_dashboards(self):
|
||||
self.login(username="admin")
|
||||
uri = "api/v1/dashboard/world_health/embedded"
|
||||
|
||||
# initial get should return 404
|
||||
resp = self.get_assert_metric(uri, "get_embedded")
|
||||
self.assertEqual(resp.status_code, 404)
|
||||
|
||||
# post succeeds and returns value
|
||||
allowed_domains = ["test.example", "embedded.example"]
|
||||
resp = self.post_assert_metric(
|
||||
uri,
|
||||
{"allowed_domains": allowed_domains},
|
||||
"set_embedded",
|
||||
)
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
result = json.loads(resp.data.decode("utf-8"))["result"]
|
||||
self.assertIsNotNone(result["uuid"])
|
||||
self.assertNotEqual(result["uuid"], "")
|
||||
self.assertEqual(result["allowed_domains"], allowed_domains)
|
||||
|
||||
# get returns value
|
||||
resp = self.get_assert_metric(uri, "get_embedded")
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
result = json.loads(resp.data.decode("utf-8"))["result"]
|
||||
self.assertIsNotNone(result["uuid"])
|
||||
self.assertNotEqual(result["uuid"], "")
|
||||
self.assertEqual(result["allowed_domains"], allowed_domains)
|
||||
|
||||
# save uuid for later
|
||||
original_uuid = result["uuid"]
|
||||
|
||||
# put succeeds and returns value
|
||||
resp = self.post_assert_metric(uri, {"allowed_domains": []}, "set_embedded")
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
self.assertIsNotNone(result["uuid"])
|
||||
self.assertNotEqual(result["uuid"], "")
|
||||
self.assertEqual(result["allowed_domains"], allowed_domains)
|
||||
|
||||
# get returns changed value
|
||||
resp = self.get_assert_metric(uri, "get_embedded")
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
result = json.loads(resp.data.decode("utf-8"))["result"]
|
||||
self.assertEqual(result["uuid"], original_uuid)
|
||||
self.assertEqual(result["allowed_domains"], [])
|
||||
|
||||
# delete succeeds
|
||||
resp = self.delete_assert_metric(uri, "delete_embedded")
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
|
||||
# get returns 404
|
||||
resp = self.get_assert_metric(uri, "get_embedded")
|
||||
self.assertEqual(resp.status_code, 404)
|
||||
|
||||
Reference in New Issue
Block a user