Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@
repository.
"""

# `credentials` must be listed before modules that import from it.
# If listed later, those imports happen before pytest can register it for
# assertion rewriting, causing a PytestAssertRewriteWarning.
pytest_plugins = [
"tests.mock_vws.fixtures.credentials",
"tests.mock_vws.fixtures.prepared_requests",
"tests.mock_vws.fixtures.vuforia_backends",
"tests.mock_vws.fixtures.model_target_prepared_requests",
Expand Down
164 changes: 1 addition & 163 deletions tests/mock_vws/fixtures/credentials.py
Original file line number Diff line number Diff line change
@@ -1,97 +1,6 @@
"""Fixtures for credentials for Vuforia databases."""
"""Credential data shared by API tests and backend adapters."""

from dataclasses import dataclass, field
from pathlib import Path
from uuid import uuid4

import pytest
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict

from mock_vws.database import CloudDatabase
from mock_vws.states import States


class _CloudDatabaseSettings(BaseSettings):
"""Settings for a Vuforia database."""

target_manager_database_name: str
server_access_key: str
server_secret_key: str
client_access_key: str
client_secret_key: str

model_config = SettingsConfigDict(
env_prefix="VUFORIA_",
env_file=Path("vuforia_secrets.env"),
extra="allow",
)


class _WorkingCloudDatabaseSettings(_CloudDatabaseSettings):
"""Settings for the working Vuforia database.

Only the working database has an ID, because only endpoints which name
a database in their path need one.
"""

database_id: str


class _InactiveCloudDatabaseSettings(_CloudDatabaseSettings):
"""Settings for an inactive Vuforia database."""

model_config = SettingsConfigDict(
env_prefix="INACTIVE_VUFORIA_",
env_file=Path("vuforia_secrets.env"),
extra="allow",
)


class _InactiveVuMarkDatabaseSettings(BaseSettings):
"""Settings for an inactive VuMark database."""

target_manager_database_name: str
server_access_key: str
server_secret_key: str

model_config = SettingsConfigDict(
env_prefix="INACTIVE_VUMARK_VUFORIA_",
env_file=Path("vuforia_secrets.env"),
extra="allow",
)


class _VuMarkCloudDatabaseSettings(BaseSettings):
"""Settings for a VuMark Vuforia database."""

target_manager_database_name: str
server_access_key: str
server_secret_key: str
target_id: str
processing_target_id: str = Field(default_factory=lambda: uuid4().hex)

model_config = SettingsConfigDict(
env_prefix="VUMARK_VUFORIA_",
env_file=Path("vuforia_secrets.env"),
extra="allow",
)


class _ModelTargetSettings(BaseSettings):
"""Settings for the Model Target Web API."""

client_id: str
client_secret: str
cad_data_url: str
username: str
password: str

model_config = SettingsConfigDict(
env_prefix="MODEL_TARGET_VUFORIA_",
env_file=Path("vuforia_secrets.env"),
extra="allow",
)


@dataclass(frozen=True, kw_only=True)
Expand Down Expand Up @@ -123,74 +32,3 @@ class ModelTargetCredentials:
cad_data_url: str = field(repr=False)
username: str = field(repr=False)
password: str = field(repr=False)


def get_model_target_credentials() -> ModelTargetCredentials:
"""Return Model Target Web API credentials from environment
variables.
"""
settings = _ModelTargetSettings.model_validate(obj={})
return ModelTargetCredentials(
client_id=settings.client_id,
client_secret=settings.client_secret,
cad_data_url=settings.cad_data_url,
username=settings.username,
password=settings.password,
)


@pytest.fixture
def vuforia_database() -> CloudDatabase:
"""Return VWS credentials from environment variables."""
settings = _WorkingCloudDatabaseSettings.model_validate(obj={})
return CloudDatabase(
database_id=settings.database_id,
database_name=settings.target_manager_database_name,
server_access_key=settings.server_access_key,
server_secret_key=settings.server_secret_key,
client_access_key=settings.client_access_key,
client_secret_key=settings.client_secret_key,
state=States.WORKING,
)


@pytest.fixture
def inactive_cloud_database() -> CloudDatabase:
"""
Return VWS credentials for an inactive project from environment
variables.
"""
settings = _InactiveCloudDatabaseSettings.model_validate(obj={})
return CloudDatabase(
database_name=settings.target_manager_database_name,
server_access_key=settings.server_access_key,
server_secret_key=settings.server_secret_key,
client_access_key=settings.client_access_key,
client_secret_key=settings.client_secret_key,
state=States.PROJECT_INACTIVE,
)


@pytest.fixture
def inactive_vumark_database() -> InactiveVuMarkCloudDatabase:
"""Return inactive VuMark credentials from environment variables."""
settings = _InactiveVuMarkDatabaseSettings.model_validate(obj={})
return InactiveVuMarkCloudDatabase(
target_manager_database_name=settings.target_manager_database_name,
server_access_key=settings.server_access_key,
server_secret_key=settings.server_secret_key,
)


@pytest.fixture
def vumark_vuforia_database() -> VuMarkCloudDatabase:
"""Return VuMark VWS credentials from environment variables."""
settings = _VuMarkCloudDatabaseSettings.model_validate(obj={})

return VuMarkCloudDatabase(
target_manager_database_name=settings.target_manager_database_name,
server_access_key=settings.server_access_key,
server_secret_key=settings.server_secret_key,
target_id=settings.target_id,
processing_target_id=settings.processing_target_id,
)
164 changes: 164 additions & 0 deletions tests/mock_vws/fixtures/real_credentials.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
"""Load credentials for the explicit real-Vuforia backend."""

from pathlib import Path
from uuid import uuid4

from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict

from mock_vws.database import CloudDatabase
from mock_vws.states import States
from tests.mock_vws.fixtures.credentials import (
InactiveVuMarkCloudDatabase,
ModelTargetCredentials,
VuMarkCloudDatabase,
)


class _CloudDatabaseSettings(BaseSettings):
"""Settings for a Vuforia database."""

target_manager_database_name: str
server_access_key: str
server_secret_key: str
client_access_key: str
client_secret_key: str

model_config = SettingsConfigDict(
env_prefix="VUFORIA_",
env_file=Path("vuforia_secrets.env"),
extra="allow",
)


class _WorkingCloudDatabaseSettings(_CloudDatabaseSettings):
"""Settings for the working Vuforia database.

Only the working database has an ID, because only endpoints which name
a database in their path need one.
"""

database_id: str


class _InactiveCloudDatabaseSettings(_CloudDatabaseSettings):
"""Settings for an inactive Vuforia database."""

model_config = SettingsConfigDict(
env_prefix="INACTIVE_VUFORIA_",
env_file=Path("vuforia_secrets.env"),
extra="allow",
)


class _InactiveVuMarkDatabaseSettings(BaseSettings):
"""Settings for an inactive VuMark database."""

target_manager_database_name: str
server_access_key: str
server_secret_key: str

model_config = SettingsConfigDict(
env_prefix="INACTIVE_VUMARK_VUFORIA_",
env_file=Path("vuforia_secrets.env"),
extra="allow",
)


class _VuMarkCloudDatabaseSettings(BaseSettings):
"""Settings for a VuMark Vuforia database."""

target_manager_database_name: str
server_access_key: str
server_secret_key: str
target_id: str
processing_target_id: str = Field(default_factory=lambda: uuid4().hex)

model_config = SettingsConfigDict(
env_prefix="VUMARK_VUFORIA_",
env_file=Path("vuforia_secrets.env"),
extra="allow",
)


class _ModelTargetSettings(BaseSettings):
"""Settings for the Model Target Web API."""

client_id: str
client_secret: str
cad_data_url: str
username: str
password: str

model_config = SettingsConfigDict(
env_prefix="MODEL_TARGET_VUFORIA_",
env_file=Path("vuforia_secrets.env"),
extra="allow",
)


def get_model_target_credentials() -> ModelTargetCredentials:
"""Return Model Target Web API credentials from environment
variables.
"""
settings = _ModelTargetSettings.model_validate(obj={})
return ModelTargetCredentials(
client_id=settings.client_id,
client_secret=settings.client_secret,
cad_data_url=settings.cad_data_url,
username=settings.username,
password=settings.password,
)


def get_real_cloud_database() -> CloudDatabase:
"""Return VWS credentials from environment variables."""
settings = _WorkingCloudDatabaseSettings.model_validate(obj={})
return CloudDatabase(
database_id=settings.database_id,
database_name=settings.target_manager_database_name,
server_access_key=settings.server_access_key,
server_secret_key=settings.server_secret_key,
client_access_key=settings.client_access_key,
client_secret_key=settings.client_secret_key,
state=States.WORKING,
)


def get_real_inactive_cloud_database() -> CloudDatabase:
"""
Return VWS credentials for an inactive project from environment
variables.
"""
settings = _InactiveCloudDatabaseSettings.model_validate(obj={})
return CloudDatabase(
database_name=settings.target_manager_database_name,
server_access_key=settings.server_access_key,
server_secret_key=settings.server_secret_key,
client_access_key=settings.client_access_key,
client_secret_key=settings.client_secret_key,
state=States.PROJECT_INACTIVE,
)


def get_real_inactive_vumark_database() -> InactiveVuMarkCloudDatabase:
"""Return inactive VuMark credentials from environment variables."""
settings = _InactiveVuMarkDatabaseSettings.model_validate(obj={})
return InactiveVuMarkCloudDatabase(
target_manager_database_name=settings.target_manager_database_name,
server_access_key=settings.server_access_key,
server_secret_key=settings.server_secret_key,
)


def get_real_vumark_database() -> VuMarkCloudDatabase:
"""Return VuMark VWS credentials from environment variables."""
settings = _VuMarkCloudDatabaseSettings.model_validate(obj={})

return VuMarkCloudDatabase(
target_manager_database_name=settings.target_manager_database_name,
server_access_key=settings.server_access_key,
server_secret_key=settings.server_secret_key,
target_id=settings.target_id,
processing_target_id=settings.processing_target_id,
)
Loading
Loading