This commit is contained in:
Mateusz Gruszczyński
2026-03-13 11:03:13 +01:00
commit 35571df778
132 changed files with 11197 additions and 0 deletions

108
tests/test_settings_ksef.py Normal file
View File

@@ -0,0 +1,108 @@
import base64
from io import BytesIO
from app.models.company import Company
from app.models.setting import AppSetting
from app.services.ksef_service import RequestsKSeFAdapter
def test_save_ksef_token_and_certificate(auth_client, app):
response = auth_client.post(
'/settings/',
data={
'ksef-base_url': ' https://api.ksef.mf.gov.pl ',
'ksef-auth_mode': 'token',
'ksef-client_id': ' client-1 ',
'ksef-token': ' secret-token ',
'ksef-submit': '1',
},
content_type='multipart/form-data',
follow_redirects=True,
)
assert response.status_code == 200
certificate_bytes = b"""-----BEGIN CERTIFICATE-----
TEST
-----END CERTIFICATE-----
"""
response = auth_client.post(
'/settings/',
data={
'ksef-base_url': 'https://api.ksef.mf.gov.pl/docs/v2',
'ksef-auth_mode': 'certificate',
'ksef-client_id': 'client-2',
'ksef-token': '',
'ksef-certificate_file': (BytesIO(certificate_bytes), 'cert.pem'),
'ksef-submit': '1',
},
content_type='multipart/form-data',
follow_redirects=True,
)
assert response.status_code == 200
with app.app_context():
company = Company.query.first()
prefix = f'company.{company.id}.ksef'
assert AppSetting.get(f'{prefix}.base_url') == 'https://api.ksef.mf.gov.pl/docs/v2'
assert AppSetting.get(f'{prefix}.auth_mode') == 'certificate'
assert AppSetting.get(f'{prefix}.client_id') == 'client-2'
assert AppSetting.get(f'{prefix}.token', decrypt=True) == 'secret-token'
assert AppSetting.get(f'{prefix}.certificate_name') == 'cert.pem'
stored = AppSetting.get(f'{prefix}.certificate_data', decrypt=True)
assert base64.b64decode(stored) == certificate_bytes
def test_ksef_settings_page_shows_saved_status(auth_client, app):
with app.app_context():
company = Company.query.first()
AppSetting.set(f'company.{company.id}.ksef.token', 'abc', encrypt=True)
AppSetting.set(f'company.{company.id}.ksef.certificate_name', 'cert.pem')
AppSetting.set(f'company.{company.id}.ksef.certificate_data', 'Y2VydA==', encrypt=True)
AppSetting.set(f'company.{company.id}.ksef.mock_mode', 'true')
from app.extensions import db
db.session.commit()
response = auth_client.get('/settings/')
body = response.get_data(as_text=True)
assert response.status_code == 200
assert 'Token KSeF jest zapisany w konfiguracji tej firmy.' in body
assert 'Certyfikat KSeF jest zapisany w konfiguracji tej firmy.' in body
assert 'Wgrany plik: cert.pem' in body
def test_requests_adapter_uses_supported_invoice_endpoints(app, monkeypatch):
calls = []
def fake_request(self, method, path, params=None, json=None, accept='application/json'):
calls.append((method, path, params, json, accept))
if path == '/invoices/query/metadata':
return {
'invoices': [
{
'ksefNumber': '5555555555-20250828-010080615740-E4',
'invoiceNumber': 'FV/1',
'issueDate': '2025-08-27',
'acquisitionDate': '2025-08-28T09:22:56+00:00',
'seller': {'nip': '5555555555', 'name': 'Test Company 1'},
'netAmount': 100,
'vatAmount': 23,
'grossAmount': 123,
}
]
}
if path == '/invoices/ksef/5555555555-20250828-010080615740-E4':
return '<Invoice/>'
raise AssertionError(path)
with app.app_context():
company = Company.query.first()
AppSetting.set(f'company.{company.id}.ksef.mock_mode', 'false')
from app.extensions import db
db.session.commit()
monkeypatch.setattr(RequestsKSeFAdapter, '_request', fake_request)
documents = RequestsKSeFAdapter(company_id=company.id).list_documents()
assert len(documents) == 1
assert calls[0][1] == '/invoices/query/metadata'
assert calls[1][1] == '/invoices/ksef/5555555555-20250828-010080615740-E4'
assert calls[1][4] == 'application/xml'