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
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
from typing import Any, Dict, List, Type, TypeVar

from attrs import define as _attrs_define
from attrs import field as _attrs_field

T = TypeVar("T", bound="WorkspaceComputeConfigEnvironmentVariables")


@_attrs_define
class WorkspaceComputeConfigEnvironmentVariables:
"""Map of environment variables injected into the container at runtime. Keys must be non-blank.

Example:
{'ENV_MODE': 'production', 'LOG_LEVEL': 'debug'}

"""

additional_properties: Dict[str, str] = _attrs_field(init=False, factory=dict)

def to_dict(self) -> Dict[str, Any]:
field_dict: Dict[str, Any] = {}
field_dict.update(self.additional_properties)
field_dict.update({})

return field_dict

@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
d = src_dict.copy()
workspace_compute_config_environment_variables = cls()

workspace_compute_config_environment_variables.additional_properties = d
return workspace_compute_config_environment_variables

@property
def additional_keys(self) -> List[str]:
return list(self.additional_properties.keys())
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "cirro_api_client"
version = "1.2.0"
version = "1.2.1"
description = "A client library for accessing Cirro"
authors = ["Cirro <support@cirro.bio>"]
license = "MIT"
Expand Down
33 changes: 32 additions & 1 deletion tests/test_client.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,40 @@
import unittest
from http import HTTPStatus
from unittest.mock import Mock

from cirro_api_client import CirroApiClient, TokenAuth
from cirro_api_client.v1.models import User


def _generate_mock_client(response_data: dict):
mock_client = Mock()
httpx_client = Mock()
mock_client.get_httpx_client.return_value = httpx_client
mock_request = Mock()
httpx_client.request.return_value = mock_request
status_code = HTTPStatus(200)
mock_request.status_code = status_code
mock_request.json.return_value = response_data
return mock_client


class TestClient(unittest.TestCase):
def test_client_set_up(self):
from cirro_api_client import CirroApiClient, TokenAuth
client = CirroApiClient(auth_method=TokenAuth(token=""), base_url="https://api.cirro.bio")
self.assertIsNotNone(client)

def test_import_models(self):
from cirro_api_client.v1.models import InviteUserRequest
req = InviteUserRequest(name="Test User", organization="test", email="test")
self.assertEqual(req.name, "Test User")
self.assertIn('name', req.to_dict())
self.assertEqual(len(req.additional_properties.keys()), 0)

def test_import_api_methods(self):
from cirro_api_client.v1.api.users import list_users
mock_client = _generate_mock_client({'data': [Mock()], 'nextToken': None})

response = list_users.sync(client=mock_client, limit=1)
self.assertIsNotNone(response)
self.assertEqual(len(response.data), 1)
self.assertIsInstance(response.data[0], User)
Loading