Initial upload: Devtoolbelt v1.0.0 - unified CLI toolkit for developers
Some checks failed
CI / build (push) Has been cancelled
CI / test (push) Has been cancelled

This commit is contained in:
2026-02-01 21:45:52 +00:00
parent b3b5c94746
commit 87eca69baf

81
tests/test_api.py Normal file
View File

@@ -0,0 +1,81 @@
"""Tests for API commands module."""
from unittest.mock import Mock, patch
from devtoolbelt.commands.api import (
_parse_auth,
_parse_headers,
_resolve_url,
)
class TestAPiHelpers:
"""Tests for API helper functions."""
def test_parse_headers_empty(self):
"""Test parsing empty headers."""
result = _parse_headers(())
assert result == {}
def test_parse_headers_single(self):
"""Test parsing single header."""
result = _parse_headers(("Content-Type: application/json",))
assert result == {"Content-Type": "application/json"}
def test_parse_headers_multiple(self):
"""Test parsing multiple headers."""
result = _parse_headers((
"Content-Type: application/json",
"Authorization: Bearer token123"
))
assert result == {
"Content-Type": "application/json",
"Authorization": "Bearer token123"
}
def test_parse_headers_with_spaces(self):
"""Test parsing headers with extra spaces."""
result = _parse_headers(("X-Custom-Header : value ",))
assert result == {"X-Custom-Header": "value"}
def test_parse_auth_none(self):
"""Test parsing no auth."""
result = _parse_auth(None)
assert result is None
def test_parse_auth_token(self):
"""Test parsing token auth."""
result = _parse_auth("bearer-token-123")
assert result == ("bearer-token-123", "")
def test_parse_auth_user_password(self):
"""Test parsing user:password auth."""
result = _parse_auth("user:password123")
assert result == ("user", "password123")
def test_resolve_url_direct(self):
"""Test resolving direct URL."""
result = _resolve_url("https://api.example.com", None)
assert result == "https://api.example.com"
def test_resolve_url_named_from_config(self):
"""Test resolving named endpoint from config."""
with patch('devtoolbelt.commands.api.get_config') as mock_get_config:
mock_config = Mock()
mock_config.get_api_endpoints.return_value = {
"myapi": "https://api.example.com/v1"
}
mock_get_config.return_value = mock_config
result = _resolve_url("myapi", None)
assert result == "https://api.example.com/v1"
def test_resolve_url_unknown_name(self):
"""Test resolving unknown name falls back to URL."""
with patch('devtoolbelt.commands.api.get_config') as mock_get_config:
mock_config = Mock()
mock_config.get_api_endpoints.return_value = {}
mock_get_config.return_value = mock_config
result = _resolve_url("unknownname", None)
assert result == "unknownname"