36c571db83
CI / lint (pull_request) Successful in 15s
CI / typecheck (pull_request) Successful in 30s
CI / security (pull_request) Successful in 22s
CI / quality (pull_request) Successful in 16s
CI / integration_tests (pull_request) Successful in 5m12s
CI / build (pull_request) Successful in 16s
CI / lint (push) Successful in 13s
CI / typecheck (push) Successful in 29s
CI / security (push) Successful in 23s
CI / quality (push) Successful in 16s
CI / unit_tests (pull_request) Successful in 13m42s
CI / integration_tests (push) Successful in 4m53s
CI / build (push) Successful in 16s
CI / unit_tests (push) Successful in 15m9s
CI / coverage (pull_request) Successful in 7m58s
CI / coverage (push) Successful in 8m14s
CI / docker (pull_request) Successful in 9s
CI / docker (push) Successful in 8s
67 lines
4.5 KiB
Plaintext
67 lines
4.5 KiB
Plaintext
*** Settings ***
|
|
Documentation Resource Repository CRUD Integration Test
|
|
Library Process
|
|
Library OperatingSystem
|
|
|
|
*** Variables ***
|
|
${PYTHON} python
|
|
|
|
*** Test Cases ***
|
|
ResourceTypeRepository Create And Get
|
|
[Documentation] Create a resource type and retrieve it by name
|
|
${script}= Catenate SEPARATOR=\n
|
|
... from sqlalchemy import create_engine, event
|
|
... from sqlalchemy.orm import sessionmaker
|
|
... from cleveragents.infrastructure.database.models import Base, ResourceTypeModel
|
|
... from cleveragents.infrastructure.database.repositories import ResourceTypeRepository
|
|
... from cleveragents.domain.models.core.resource_type import ResourceTypeSpec, ResourceKind, SandboxStrategy
|
|
... engine = create_engine("sqlite:///:memory:")
|
|
... @event.listens_for(engine, "connect")
|
|
... def _fk(conn, _): conn.cursor().execute("PRAGMA foreign_keys=ON")
|
|
... Base.metadata.create_all(engine)
|
|
... factory = sessionmaker(bind=engine)
|
|
... repo = ResourceTypeRepository(factory)
|
|
... spec = ResourceTypeSpec(name="robot/test-type", description="Robot test", resource_kind=ResourceKind.PHYSICAL, sandbox_strategy=SandboxStrategy.GIT_WORKTREE, user_addable=True, cli_args=[], parent_types=[], child_types=[], auto_discovery=None, equivalence=None, handler=None, capabilities={"read": True, "write": True, "sandbox": True, "checkpoint": False}, built_in=False)
|
|
... repo.create(spec)
|
|
... result = repo.get("robot/test-type")
|
|
... assert result is not None, "Resource type not found"
|
|
... assert result.name == "robot/test-type", f"Name mismatch: {result.name}"
|
|
... assert result.description == "Robot test"
|
|
... print("ResourceTypeRepository create+get passed")
|
|
${result}= Run Process ${PYTHON} -c ${script}
|
|
Should Be Equal As Integers ${result.rc} 0 ResourceType repo test failed: ${result.stderr}
|
|
Should Contain ${result.stdout} ResourceTypeRepository create+get passed
|
|
|
|
ResourceRepository Create And Resolve
|
|
[Documentation] Create a resource and resolve it by name and ULID
|
|
${script}= Catenate SEPARATOR=\n
|
|
... from datetime import datetime, UTC
|
|
... from sqlalchemy import create_engine, event
|
|
... from sqlalchemy.orm import sessionmaker
|
|
... from cleveragents.infrastructure.database.models import Base
|
|
... from cleveragents.infrastructure.database.repositories import ResourceTypeRepository, ResourceRepository
|
|
... from cleveragents.domain.models.core.resource_type import ResourceTypeSpec, ResourceKind, SandboxStrategy
|
|
... from cleveragents.domain.models.core.resource import Resource, PhysVirt, ResourceCapabilities
|
|
... engine = create_engine("sqlite:///:memory:")
|
|
... @event.listens_for(engine, "connect")
|
|
... def _fk(conn, _): conn.cursor().execute("PRAGMA foreign_keys=ON")
|
|
... Base.metadata.create_all(engine)
|
|
... factory = sessionmaker(bind=engine)
|
|
... rt_repo = ResourceTypeRepository(factory)
|
|
... res_repo = ResourceRepository(factory)
|
|
... spec = ResourceTypeSpec(name="robot/res-type", description="Type", resource_kind=ResourceKind.PHYSICAL, sandbox_strategy=SandboxStrategy.NONE, user_addable=True, cli_args=[], parent_types=[], child_types=[], auto_discovery=None, equivalence=None, handler=None, capabilities={"read": True, "write": True, "sandbox": True, "checkpoint": False}, built_in=False)
|
|
... rt_repo.create(spec)
|
|
... res = Resource(resource_id="01HGZ6FE0AQDYTR4BX00000001", name="robot/test-res", resource_type_name="robot/res-type", classification=PhysVirt.PHYSICAL, description="Test", properties={}, location="/tmp/test", content_hash=None, sandbox_strategy=None, capabilities=ResourceCapabilities(), created_at=datetime.now(tz=UTC), updated_at=datetime.now(tz=UTC))
|
|
... res_repo.create(res)
|
|
... by_name = res_repo.resolve_namespaced_name("robot/test-res")
|
|
... assert by_name is not None, "Resolve by name failed"
|
|
... by_ulid = res_repo.resolve_namespaced_name("01HGZ6FE0AQDYTR4BX00000001")
|
|
... assert by_ulid is not None, "Resolve by ULID failed"
|
|
... assert by_name.resource_id == by_ulid.resource_id
|
|
... print("ResourceRepository create+resolve passed")
|
|
${result}= Run Process ${PYTHON} -c ${script}
|
|
Should Be Equal As Integers ${result.rc} 0 Resource repo test failed: ${result.stderr}
|
|
Should Contain ${result.stdout} ResourceRepository create+resolve passed
|
|
|
|
*** Keywords ***
|