mirror of
https://github.com/apache/superset.git
synced 2026-04-18 23:55:00 +00:00
feat: Improve state key generation for dashboards and charts (#18576)
* feat: Improve state key generation for dashboards and charts
This commit is contained in:
committed by
GitHub
parent
801091be03
commit
48a80950de
@@ -118,6 +118,94 @@ def test_post_access_denied(client, chart_id: int, dataset_id: int):
|
||||
assert resp.status_code == 404
|
||||
|
||||
|
||||
def test_post_same_key_for_same_context(client, chart_id: int, dataset_id: int):
|
||||
login(client, "admin")
|
||||
payload = {
|
||||
"dataset_id": dataset_id,
|
||||
"chart_id": chart_id,
|
||||
"form_data": "new form_data",
|
||||
}
|
||||
resp = client.post("api/v1/explore/form_data?tab_id=1", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
first_key = data.get("key")
|
||||
resp = client.post("api/v1/explore/form_data?tab_id=1", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
second_key = data.get("key")
|
||||
assert first_key == second_key
|
||||
|
||||
|
||||
def test_post_different_key_for_different_context(
|
||||
client, chart_id: int, dataset_id: int
|
||||
):
|
||||
login(client, "admin")
|
||||
payload = {
|
||||
"dataset_id": dataset_id,
|
||||
"chart_id": chart_id,
|
||||
"form_data": "new form_data",
|
||||
}
|
||||
resp = client.post("api/v1/explore/form_data?tab_id=1", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
first_key = data.get("key")
|
||||
payload = {
|
||||
"dataset_id": dataset_id,
|
||||
"form_data": "new form_data",
|
||||
}
|
||||
resp = client.post("api/v1/explore/form_data?tab_id=1", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
second_key = data.get("key")
|
||||
assert first_key != second_key
|
||||
|
||||
|
||||
def test_post_same_key_for_same_tab_id(client, chart_id: int, dataset_id: int):
|
||||
login(client, "admin")
|
||||
payload = {
|
||||
"dataset_id": dataset_id,
|
||||
"chart_id": chart_id,
|
||||
"form_data": "new form_data",
|
||||
}
|
||||
resp = client.post("api/v1/explore/form_data?tab_id=1", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
first_key = data.get("key")
|
||||
resp = client.post("api/v1/explore/form_data?tab_id=1", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
second_key = data.get("key")
|
||||
assert first_key == second_key
|
||||
|
||||
|
||||
def test_post_different_key_for_different_tab_id(
|
||||
client, chart_id: int, dataset_id: int
|
||||
):
|
||||
login(client, "admin")
|
||||
payload = {
|
||||
"dataset_id": dataset_id,
|
||||
"chart_id": chart_id,
|
||||
"form_data": "new form_data",
|
||||
}
|
||||
resp = client.post("api/v1/explore/form_data?tab_id=1", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
first_key = data.get("key")
|
||||
resp = client.post("api/v1/explore/form_data?tab_id=2", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
second_key = data.get("key")
|
||||
assert first_key != second_key
|
||||
|
||||
|
||||
def test_post_different_key_for_no_tab_id(client, chart_id: int, dataset_id: int):
|
||||
login(client, "admin")
|
||||
payload = {
|
||||
"dataset_id": dataset_id,
|
||||
"chart_id": chart_id,
|
||||
"form_data": "new form_data",
|
||||
}
|
||||
resp = client.post("api/v1/explore/form_data", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
first_key = data.get("key")
|
||||
resp = client.post("api/v1/explore/form_data", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
second_key = data.get("key")
|
||||
assert first_key != second_key
|
||||
|
||||
|
||||
def test_put(client, chart_id: int, dataset_id: int):
|
||||
login(client, "admin")
|
||||
payload = {
|
||||
@@ -129,6 +217,54 @@ def test_put(client, chart_id: int, dataset_id: int):
|
||||
assert resp.status_code == 200
|
||||
|
||||
|
||||
def test_put_same_key_for_same_tab_id(client, chart_id: int, dataset_id: int):
|
||||
login(client, "admin")
|
||||
payload = {
|
||||
"dataset_id": dataset_id,
|
||||
"chart_id": chart_id,
|
||||
"form_data": "new form_data",
|
||||
}
|
||||
resp = client.put(f"api/v1/explore/form_data/{key}?tab_id=1", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
first_key = data.get("key")
|
||||
resp = client.put(f"api/v1/explore/form_data/{key}?tab_id=1", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
second_key = data.get("key")
|
||||
assert first_key == second_key
|
||||
|
||||
|
||||
def test_put_different_key_for_different_tab_id(client, chart_id: int, dataset_id: int):
|
||||
login(client, "admin")
|
||||
payload = {
|
||||
"dataset_id": dataset_id,
|
||||
"chart_id": chart_id,
|
||||
"form_data": "new form_data",
|
||||
}
|
||||
resp = client.put(f"api/v1/explore/form_data/{key}?tab_id=1", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
first_key = data.get("key")
|
||||
resp = client.put(f"api/v1/explore/form_data/{key}?tab_id=2", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
second_key = data.get("key")
|
||||
assert first_key != second_key
|
||||
|
||||
|
||||
def test_put_different_key_for_no_tab_id(client, chart_id: int, dataset_id: int):
|
||||
login(client, "admin")
|
||||
payload = {
|
||||
"dataset_id": dataset_id,
|
||||
"chart_id": chart_id,
|
||||
"form_data": "new form_data",
|
||||
}
|
||||
resp = client.put(f"api/v1/explore/form_data/{key}", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
first_key = data.get("key")
|
||||
resp = client.put(f"api/v1/explore/form_data/{key}", json=payload)
|
||||
data = json.loads(resp.data.decode("utf-8"))
|
||||
second_key = data.get("key")
|
||||
assert first_key != second_key
|
||||
|
||||
|
||||
def test_put_bad_request(client, chart_id: int, dataset_id: int):
|
||||
login(client, "admin")
|
||||
payload = {
|
||||
|
||||
Reference in New Issue
Block a user