1
0
Fork 0
eos-downloader/tests/unit/logics/test_arista_server.py
Daniel Baumann e0857d13c1
Adding upstream version 0.12.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-02-10 06:39:48 +01:00

115 lines
3.4 KiB
Python

import pytest
import requests
from unittest.mock import patch, Mock
from eos_downloader.logics.arista_server import AristaServer
import eos_downloader.exceptions
from tests.lib.fixtures import xml_path, xml_data
@pytest.fixture
def server():
return AristaServer(token="testtoken")
def test_authenticate_success(server):
with patch('requests.post') as mock_post:
mock_response = Mock()
mock_response.json.return_value = {
"status": {"message": "Success"},
"data": {"session_code": "testsessioncode"}
}
mock_post.return_value = mock_response
assert server.authenticate() is True
assert server._session_id is not None
def test_authenticate_invalid_token(server):
with patch('requests.post') as mock_post:
mock_response = Mock()
mock_response.json.return_value = {
"status": {"message": "Invalid access token"}
}
mock_post.return_value = mock_response
with pytest.raises(eos_downloader.exceptions.AuthenticationError):
server.authenticate()
def test_authenticate_expired_token(server):
with patch('requests.post') as mock_post:
mock_response = Mock()
mock_response.json.return_value = {
"status": {"message": "Access token expired"}
}
mock_post.return_value = mock_response
with pytest.raises(eos_downloader.exceptions.AuthenticationError):
server.authenticate()
def test_authenticate_key_error(server):
with patch('requests.post') as mock_post:
mock_response = Mock()
mock_response.json.return_value = {
"status": {"message": "Success"}
}
mock_post.return_value = mock_response
assert server.authenticate() is False
assert server._session_id is None
def test_get_xml_data_success(server, xml_path):
with patch('requests.post') as mock_post:
with open(xml_path, 'r') as file:
xml_content = file.read()
mock_response = Mock()
mock_response.json.return_value = {
"status": {"message": "Success"},
"data": {"xml": xml_content},
}
mock_post.return_value = mock_response
xml_data = server.get_xml_data()
assert xml_data is not None
assert (
xml_data.getroot().tag == "cvpFolderList"
) # Assuming the root tag in data.xml is 'cvpFolderList'
def test_get_xml_data_key_error(server):
with patch('requests.post') as mock_post:
mock_response = Mock()
mock_response.json.return_value = {}
mock_post.return_value = mock_response
with pytest.raises(KeyError):
server.get_xml_data()
def test_get_url_success(server):
with patch('requests.post') as mock_post:
mock_response = Mock()
mock_response.json.return_value = {
"status": {"message": "Success"},
"data": {"url": "http://example.com/download"},
}
mock_post.return_value = mock_response
url = server.get_url("remote/file/path")
assert url == "http://example.com/download"
def test_get_url_no_data(server):
with patch('requests.post') as mock_post:
mock_response = Mock()
mock_response.json.return_value = {
"status": {"message": "Success"},
}
mock_post.return_value = mock_response
url = server.get_url("remote/file/path")
assert url is None