Initial upload: Devtoolbelt v1.0.0 - unified CLI toolkit for developers
This commit is contained in:
81
tests/test_api.py
Normal file
81
tests/test_api.py
Normal 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"
|
||||
Reference in New Issue
Block a user