Skip to content

Commit

Permalink
svcs/turnilo_dashboards: allow '.' in query names
Browse files Browse the repository at this point in the history
Allow the character '.' as part of the query params `dataCube` and
`shortName`.

Add more coverage on some other special chars.
  • Loading branch information
msune committed Jun 14, 2024
1 parent 74e77c6 commit dafcca8
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/services/turnilo_dashboards.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class GetQueryParams(BaseModel):
def is_valid_param(self, s: str) -> bool:
if len(s) > 256:
return False
pattern = r'^[a-zA-Z0-9_-]+$'
pattern = r'^[a-zA-Z0-9_.-]+$'
return bool(re.match(pattern, s))

def validate(self):
Expand Down
20 changes: 19 additions & 1 deletion test/unit_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,9 @@ def test_get_all_dashboards_query_params(sample_dashboard: dict[str, Any]) -> No
assert res.status_code == 400
res = get_dashboard(HOST, PORT, dataCube="name;test")
assert res.status_code == 400
res = get_dashboard(HOST, PORT, shortName="name?test")
res = get_dashboard(HOST, PORT, dataCube="name:test")
assert res.status_code == 400
res = get_dashboard(HOST, PORT, shortName="name:test")
assert res.status_code == 400
res = get_dashboard(HOST, PORT, dataCube="name?test")
assert res.status_code == 400
Expand All @@ -142,12 +144,28 @@ def test_get_all_dashboards_query_params(sample_dashboard: dict[str, Any]) -> No
assert res.status_code == 400
res = get_dashboard(HOST, PORT, dataCube="name\"test")
assert res.status_code == 400
res = get_dashboard(HOST, PORT, shortName="name/test")
assert res.status_code == 400
res = get_dashboard(HOST, PORT, dataCube="name/test")
assert res.status_code == 400
res = get_dashboard(HOST, PORT, shortName="name?test")
assert res.status_code == 400
res = get_dashboard(HOST, PORT, dataCube="name?test")
assert res.status_code == 400

# Invalid length
long_name = 's' * 280
res = get_dashboard(HOST, PORT, shortName=long_name)
assert res.status_code == 400
res = get_dashboard(HOST, PORT, dataCube=long_name)
assert res.status_code == 400

# Make sure -,_. is allowed
res = get_dashboard(HOST, PORT, shortName="name.test_hello-2")
assert res.status_code == 200
res = get_dashboard(HOST, PORT, dataCube="name.test_hello-2")
assert res.status_code == 200

# Now validate functionality

# Name only
Expand Down

0 comments on commit dafcca8

Please sign in to comment.