initial commit
This commit is contained in:
78
tests/test_app.py
Normal file
78
tests/test_app.py
Normal file
@@ -0,0 +1,78 @@
|
||||
from app import app
|
||||
import json
|
||||
import pytest
|
||||
import requests
|
||||
|
||||
|
||||
# Patch requests.Session used by clients before importing app to avoid network calls
|
||||
class SilentDummySession:
|
||||
def __init__(self):
|
||||
self.headers = {}
|
||||
self.auth = None
|
||||
|
||||
def post(self, *args, **kwargs):
|
||||
class R:
|
||||
def raise_for_status(self):
|
||||
return None
|
||||
|
||||
def json(self):
|
||||
return {'data': {'ticket': 'TICKET', 'CSRFPreventionToken': 'CSRF'}}
|
||||
|
||||
return R()
|
||||
|
||||
def get(self, *args, **kwargs):
|
||||
class R:
|
||||
def raise_for_status(self):
|
||||
return None
|
||||
|
||||
def json(self):
|
||||
return {'data': []}
|
||||
|
||||
return R()
|
||||
|
||||
|
||||
def _patch_sessions(monkeypatch):
|
||||
monkeypatch.setattr('utils.proxmox_client.requests.Session',
|
||||
lambda: SilentDummySession())
|
||||
monkeypatch.setattr(
|
||||
'utils.check_mk_client.requests.Session', lambda: SilentDummySession())
|
||||
|
||||
|
||||
# Replace requests.Session globally immediately so importing app won't trigger real requests
|
||||
requests.Session = lambda: SilentDummySession()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def client(monkeypatch):
|
||||
_patch_sessions(monkeypatch)
|
||||
# mock proxmox and checkmk clients inside app
|
||||
|
||||
class DummyProx:
|
||||
def get_cluster(self):
|
||||
return {'nodes': [{'name': 'node1', 'status': 'online', 'maxmem': 1024, 'maxcpu': 2, 'qemu': []}]}
|
||||
|
||||
class DummyCheck:
|
||||
def get_host_status(self, name):
|
||||
return {'name': name, 'state': 'ok'}
|
||||
|
||||
def get_host_services(self, name):
|
||||
return [{'service_description': 'ping', 'state': 'ok', 'output': 'OK - PING'}]
|
||||
|
||||
monkeypatch.setattr('app.proxmox', DummyProx())
|
||||
monkeypatch.setattr('app.checkmk', DummyCheck())
|
||||
|
||||
app.testing = True
|
||||
with app.test_client() as c:
|
||||
yield c
|
||||
|
||||
|
||||
def test_index(client):
|
||||
r = client.get('/')
|
||||
assert r.status_code == 200
|
||||
assert b'node1' in r.data
|
||||
|
||||
|
||||
def test_host_detail(client):
|
||||
r = client.get('/host/node1')
|
||||
assert r.status_code == 200
|
||||
assert b'ping' in r.data
|
||||
Reference in New Issue
Block a user