Skip to content

Commit 9efcf5e

Browse files
committed
Use VuMark fixture fields in generation test
1 parent f8c083c commit 9efcf5e

3 files changed

Lines changed: 32 additions & 47 deletions

File tree

tests/mock_vws/fixtures/credentials.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Fixtures for credentials for Vuforia databases."""
22

3+
from dataclasses import dataclass
34
from pathlib import Path
45

56
import pytest
@@ -41,6 +42,8 @@ class _VuMarkVuforiaDatabaseSettings(BaseSettings):
4142
target_manager_database_name: str
4243
server_access_key: str
4344
server_secret_key: str
45+
target_id: str = "<SHARED_VUMARK_TARGET_ID>"
46+
instance_id: str = "<SHARED_VUMARK_INSTANCE_ID>"
4447

4548
model_config = SettingsConfigDict(
4649
env_prefix="VUMARK_VUFORIA_",
@@ -49,6 +52,17 @@ class _VuMarkVuforiaDatabaseSettings(BaseSettings):
4952
)
5053

5154

55+
@dataclass(frozen=True)
56+
class VuMarkVuforiaDatabase:
57+
"""Credentials for the VuMark generation API."""
58+
59+
target_manager_database_name: str
60+
server_access_key: str
61+
server_secret_key: str
62+
target_id: str
63+
instance_id: str
64+
65+
5266
@pytest.fixture
5367
def vuforia_database() -> VuforiaDatabase:
5468
"""Return VWS credentials from environment variables."""
@@ -81,12 +95,14 @@ def inactive_database() -> VuforiaDatabase:
8195

8296

8397
@pytest.fixture
84-
def vumark_vuforia_database() -> VuforiaDatabase:
98+
def vumark_vuforia_database() -> VuMarkVuforiaDatabase:
8599
"""Return VuMark VWS credentials from environment variables."""
86100
settings = _VuMarkVuforiaDatabaseSettings.model_validate(obj={})
87101

88-
return VuforiaDatabase(
89-
database_name=settings.target_manager_database_name,
102+
return VuMarkVuforiaDatabase(
103+
target_manager_database_name=settings.target_manager_database_name,
90104
server_access_key=settings.server_access_key,
91105
server_secret_key=settings.server_secret_key,
106+
target_id=settings.target_id,
107+
instance_id=settings.instance_id,
92108
)

tests/mock_vws/test_vumark_generation_api.py

Lines changed: 11 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,49 +2,24 @@
22

33
import json
44
from http import HTTPMethod, HTTPStatus
5-
from pathlib import Path
65

76
import pytest
87
import requests
9-
from pydantic import ValidationError
10-
from pydantic_settings import BaseSettings, SettingsConfigDict
118
from vws_auth_tools import authorization_header, rfc_1123_date
129

13-
from mock_vws.database import VuforiaDatabase
10+
from tests.mock_vws.fixtures.credentials import VuMarkVuforiaDatabase
1411

1512
_VWS_HOST = "https://vws.vuforia.com"
1613
_PNG_SIGNATURE = b"\x89PNG\r\n\x1a\n"
1714

1815

19-
class _VuMarkGenerationSettings(BaseSettings):
20-
"""Settings needed for VuMark instance generation tests."""
21-
22-
target_id: str
23-
instance_id: str
24-
25-
model_config = SettingsConfigDict(
26-
env_prefix="VUMARK_VUFORIA_",
27-
env_file=Path("vuforia_secrets.env"),
28-
extra="allow",
29-
)
30-
31-
32-
def _get_vumark_generation_settings() -> _VuMarkGenerationSettings:
33-
"""Return generation settings, skipping if they are not configured."""
34-
try:
35-
settings = _VuMarkGenerationSettings.model_validate(obj={})
36-
except ValidationError:
37-
pytest.skip(
38-
reason=(
39-
"VuMark generation settings are not configured. "
40-
"Set VUMARK_VUFORIA_TARGET_ID and "
41-
"VUMARK_VUFORIA_INSTANCE_ID."
42-
),
43-
)
44-
45-
if settings.target_id.startswith("<") or settings.instance_id.startswith(
16+
def test_generate_instance_success(
17+
vumark_vuforia_database: VuMarkVuforiaDatabase,
18+
) -> None:
19+
"""A VuMark instance can be generated with valid template settings."""
20+
if vumark_vuforia_database.target_id.startswith(
4621
"<"
47-
):
22+
) or vumark_vuforia_database.instance_id.startswith("<"):
4823
pytest.skip(
4924
reason=(
5025
"VuMark generation settings are placeholders. "
@@ -53,19 +28,11 @@ def _get_vumark_generation_settings() -> _VuMarkGenerationSettings:
5328
),
5429
)
5530

56-
return settings
57-
58-
59-
def test_generate_instance_success(
60-
vumark_vuforia_database: VuforiaDatabase,
61-
) -> None:
62-
"""A VuMark instance can be generated with valid template settings."""
63-
settings = _get_vumark_generation_settings()
64-
request_path = f"/targets/{settings.target_id}/instances"
31+
request_path = f"/targets/{vumark_vuforia_database.target_id}/instances"
6532
content_type = "application/json"
66-
content = json.dumps(obj={"instance_id": settings.instance_id}).encode(
67-
encoding="utf-8"
68-
)
33+
content = json.dumps(
34+
obj={"instance_id": vumark_vuforia_database.instance_id}
35+
).encode(encoding="utf-8")
6936
date = rfc_1123_date()
7037
authorization_string = authorization_header(
7138
access_key=vumark_vuforia_database.server_access_key,

vuforia_secrets.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,5 @@ VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME=<SHARED_VUMARK_DATABASE_NAME>
1919

2020
VUMARK_VUFORIA_SERVER_ACCESS_KEY=<SHARED_VUMARK_SERVER_ACCESS_KEY>
2121
VUMARK_VUFORIA_SERVER_SECRET_KEY=<SHARED_VUMARK_SERVER_SECRET_KEY>
22+
VUMARK_VUFORIA_TARGET_ID=<SHARED_VUMARK_TARGET_ID>
23+
VUMARK_VUFORIA_INSTANCE_ID=<SHARED_VUMARK_INSTANCE_ID>

0 commit comments

Comments
 (0)