84 lines
2.8 KiB
Python
84 lines
2.8 KiB
Python
|
|
# Copyright (C) CVAT.ai Corporation
|
||
|
|
#
|
||
|
|
# SPDX-License-Identifier: MIT
|
||
|
|
|
||
|
|
import io
|
||
|
|
from logging import Logger
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
from cvat_sdk import Client, models
|
||
|
|
from cvat_sdk.api_client import exceptions
|
||
|
|
from cvat_sdk.core.proxies.organizations import Organization
|
||
|
|
|
||
|
|
|
||
|
|
class TestOrganizationUsecases:
|
||
|
|
@pytest.fixture(autouse=True)
|
||
|
|
def setup(
|
||
|
|
self,
|
||
|
|
fxt_login: tuple[Client, str],
|
||
|
|
fxt_logger: tuple[Logger, io.StringIO],
|
||
|
|
fxt_stdout: io.StringIO,
|
||
|
|
):
|
||
|
|
logger, self.logger_stream = fxt_logger
|
||
|
|
self.client, self.user = fxt_login
|
||
|
|
self.client.logger = logger
|
||
|
|
|
||
|
|
api_client = self.client.api_client
|
||
|
|
for k in api_client.configuration.logger:
|
||
|
|
api_client.configuration.logger[k] = logger
|
||
|
|
|
||
|
|
yield
|
||
|
|
|
||
|
|
assert fxt_stdout.getvalue() == ""
|
||
|
|
|
||
|
|
@pytest.fixture()
|
||
|
|
def fxt_organization(self) -> Organization:
|
||
|
|
org = self.client.organizations.create(
|
||
|
|
models.OrganizationWriteRequest(
|
||
|
|
slug="testorg",
|
||
|
|
name="Test Organization",
|
||
|
|
description="description",
|
||
|
|
contact={"email": "nowhere@cvat.invalid"},
|
||
|
|
)
|
||
|
|
)
|
||
|
|
|
||
|
|
try:
|
||
|
|
yield org
|
||
|
|
finally:
|
||
|
|
# It's not allowed to create multiple orgs with the same slug,
|
||
|
|
# so we have to remove the org at the end of each test.
|
||
|
|
org.remove()
|
||
|
|
|
||
|
|
def test_can_create_organization(self, fxt_organization: Organization):
|
||
|
|
assert fxt_organization.slug == "testorg"
|
||
|
|
assert fxt_organization.name == "Test Organization"
|
||
|
|
assert fxt_organization.description == "description"
|
||
|
|
assert fxt_organization.contact == {"email": "nowhere@cvat.invalid"}
|
||
|
|
|
||
|
|
def test_can_retrieve_organization(self, fxt_organization: Organization):
|
||
|
|
org = self.client.organizations.retrieve(fxt_organization.id)
|
||
|
|
|
||
|
|
assert org.id == fxt_organization.id
|
||
|
|
assert org.slug == fxt_organization.slug
|
||
|
|
|
||
|
|
def test_can_list_organizations(self, fxt_organization: Organization):
|
||
|
|
orgs = self.client.organizations.list()
|
||
|
|
|
||
|
|
assert fxt_organization.slug in set(o.slug for o in orgs)
|
||
|
|
|
||
|
|
def test_can_update_organization(self, fxt_organization: Organization):
|
||
|
|
fxt_organization.update(
|
||
|
|
models.PatchedOrganizationWriteRequest(description="new description")
|
||
|
|
)
|
||
|
|
assert fxt_organization.description == "new description"
|
||
|
|
|
||
|
|
retrieved_org = self.client.organizations.retrieve(fxt_organization.id)
|
||
|
|
assert retrieved_org.description == "new description"
|
||
|
|
|
||
|
|
def test_can_remove_organization(self):
|
||
|
|
org = self.client.organizations.create(models.OrganizationWriteRequest(slug="testorg2"))
|
||
|
|
org.remove()
|
||
|
|
|
||
|
|
with pytest.raises(exceptions.NotFoundException):
|
||
|
|
org.fetch()
|