-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
174 additions
and
1,771 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
import os | ||
|
||
import pytest | ||
import requests | ||
|
||
ENVIRONMENTS = { | ||
"dev": { | ||
"API_URL": "https://backend.testing.passculture.team", | ||
"OFFER_ID": "440", | ||
}, | ||
"staging": { | ||
"API_URL": "https://backend.staging.passculture.team", | ||
"OFFER_ID": "45093803", | ||
}, | ||
"production": { | ||
"API_URL": "https://backend.passculture.team", | ||
"OFFER_ID": "87654321", | ||
}, | ||
} | ||
|
||
|
||
def get_environment_config(): | ||
env = os.environ["ENV_SHORT_NAME"] | ||
defaults = ENVIRONMENTS[env] | ||
defaults["ACCESS_TOKEN"] = os.environ["ACCESS_TOKEN"] | ||
return defaults | ||
|
||
|
||
@pytest.fixture(scope="session") | ||
def env(): | ||
return get_environment_config() | ||
|
||
|
||
@pytest.fixture(scope="session") | ||
def bearer_token(env): | ||
url = f"{env['API_URL']}/native/v1/refresh_access_token" | ||
headers = { | ||
"Content-Type": "application/json", | ||
"Authorization": f"Bearer {env['ACCESS_TOKEN']}", | ||
} | ||
data = {} | ||
response = requests.post(url, json=data, headers=headers) | ||
return response.json()["accessToken"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
pytest-cov==2.10.1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# This file was autogenerated by uv via the following command: | ||
# uv pip compile requirements.in -o requirements.txt --python-platform=linux | ||
coverage==7.6.1 | ||
# via pytest-cov | ||
exceptiongroup==1.2.2 | ||
# via pytest | ||
iniconfig==2.0.0 | ||
# via pytest | ||
packaging==24.1 | ||
# via pytest | ||
pluggy==1.5.0 | ||
# via pytest | ||
pytest==8.3.2 | ||
# via pytest-cov | ||
pytest-cov==2.10.1 | ||
# via -r requirements.in | ||
tomli==2.0.1 | ||
# via pytest |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
import requests | ||
from utils import is_unique | ||
|
||
|
||
# Test for basic playlist recommendation | ||
def test_playlist_recommendation(env, bearer_token): | ||
url = f"{env['API_URL']}/native/v1/recommendation/playlist" | ||
headers = { | ||
"Content-Type": "application/json", | ||
"Authorization": f"Bearer {bearer_token}", | ||
} | ||
data = {} | ||
|
||
response = requests.post(url, json=data, headers=headers) | ||
|
||
assert response.status_code == 200 | ||
assert response.elapsed.total_seconds() < 10 | ||
|
||
json_response = response.json() | ||
assert json_response is not None | ||
assert isinstance(json_response, dict) | ||
assert "playlist_recommended_offers" in json_response | ||
assert isinstance(json_response["playlist_recommended_offers"], list) | ||
assert len(json_response["playlist_recommended_offers"]) > 0 | ||
|
||
|
||
# Test playlist recommendation with geolocation (empty body) | ||
def test_playlist_recommendation_geolocation(env, bearer_token): | ||
url = f"{env['API_URL']}/native/v1/recommendation/playlist?longitude=2.3688874&latitude=48.8632553" | ||
headers = { | ||
"Content-Type": "application/json", | ||
"Authorization": f"Bearer {bearer_token}", | ||
} | ||
data = {} | ||
|
||
response = requests.post(url, json=data, headers=headers) | ||
|
||
assert response.status_code == 200 | ||
assert response.elapsed.total_seconds() < 10 | ||
|
||
json_response = response.json() | ||
assert json_response is not None | ||
assert "playlist_recommended_offers" in json_response | ||
assert isinstance(json_response["playlist_recommended_offers"], list) | ||
assert len(json_response["playlist_recommended_offers"]) > 0 | ||
|
||
|
||
# Test playlist recommendation with unique offers check | ||
def test_playlist_recommendation_unique_offer_ids(env, bearer_token): | ||
url = f"{env['API_URL']}/native/v1/recommendation/playlist" | ||
headers = { | ||
"Content-Type": "application/json", | ||
"Authorization": f"Bearer {bearer_token}", | ||
} | ||
data = {} | ||
|
||
response = requests.post(url, json=data, headers=headers) | ||
|
||
assert response.status_code == 200 | ||
|
||
json_response = response.json() | ||
offer_ids = [offer["id"] for offer in json_response["playlist_recommended_offers"]] | ||
assert is_unique(offer_ids) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import requests | ||
from utils import is_unique | ||
|
||
|
||
# Test for similar offers based on offer ID | ||
def test_similar_offers(env): | ||
url = f"{env['API_URL']}/native/v1/recommendation/similar_offers/{env['OFFER_ID']}" | ||
|
||
response = requests.get(url) | ||
print(url) | ||
assert response.status_code == 200 | ||
assert response.elapsed.total_seconds() < 10 | ||
|
||
json_response = response.json() | ||
assert "results" in json_response | ||
assert isinstance(json_response["results"], list) | ||
assert len(json_response["results"]) > 0 | ||
|
||
|
||
# Test for similar offers with geolocation | ||
def test_similar_offers_geolocation(env): | ||
url = f"{env['API_URL']}/native/v1/recommendation/similar_offers/{env['OFFER_ID']}?longitude=2.3688874&latitude=48.8632553" | ||
print(url) | ||
response = requests.get(url) | ||
|
||
assert response.status_code == 200 | ||
|
||
json_response = response.json() | ||
assert "results" in json_response | ||
offer_ids = [offer["id"] for offer in json_response["results"]] | ||
assert is_unique(offer_ids) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
def is_unique(array): | ||
"""Helper function to check if an array contains unique elements.""" | ||
return len(array) == len(set(array)) |
Oops, something went wrong.