Skip to content
Snippets Groups Projects
Unverified Commit 87410681 authored by Ngoc Khuat's avatar Ngoc Khuat Committed by GitHub
Browse files

Get params value API returns 400 if param not found (#23035)

* dashboard api to get params value should return 404 instead of 500 when param not found

* on the 2nd thought, let's return 400

* update the tests too

* wording
parent 0bd20d0b
No related merge requests found
......@@ -590,12 +590,14 @@
(let [dashboard (hydrate dashboard :resolved-params)]
(when-not (get (:resolved-params dashboard) param-key)
(throw (ex-info (tru "Dashboard does not have a parameter with the ID {0}" (pr-str param-key))
{:resolved-params (keys (:resolved-params dashboard))})))
{:resolved-params (keys (:resolved-params dashboard))
:status-code 400})))
(let [constraints (chain-filter-constraints dashboard constraint-param-key->value)
field-ids (param-key->field-ids dashboard param-key)]
(when (empty? field-ids)
(throw (ex-info (tru "Parameter {0} does not have any Fields associated with it" (pr-str param-key))
{:param (get (:resolved-params dashboard) param-key)})))
{:param (get (:resolved-params dashboard) param-key)
:status-code 400})))
;; TODO - we should combine these all into a single UNION ALL query against the data warehouse instead of doing a
;; separate query for each Field (for parameters that are mapped to more than one Field)
(try
......
......@@ -1457,6 +1457,14 @@
(is (= "You don't have permissions to do that."
(mt/user-http-request :rasta :get 403 url)))))))))))
(deftest chain-filter-not-found-test
(mt/with-temp Dashboard [{dashboard-id :id}]
(testing "GET /api/dashboard/:id/params/:param-key/values returns 400 if param not found"
(mt/user-http-request :rasta :get 400 (format "dashboard/%d/params/non-existing-param/values" dashboard-id)))
(testing "GET /api/dashboard/:id/params/:param-key/search/:query returns 400 if param not found"
(mt/user-http-request :rasta :get 400 (format "dashboard/%d/params/non-existing-param/search/bar" dashboard-id)))))
(deftest chain-filter-invalid-parameters-test
(testing "GET /api/dashboard/:id/params/:param-key/values"
(testing "If some Dashboard parameters do not have valid Field IDs, we should ignore them"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment