mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-28 08:03:36 +00:00
Closes: #2156. Tests: - Remove a domain from System -> Config, 'letsencrypt revoke' action is not invoked. - Triggering a manual revoke operation still leads to action getting triggered. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
76 lines
2.4 KiB
Python
76 lines
2.4 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""
|
|
Tests for letsencrypt module.
|
|
"""
|
|
|
|
from unittest.mock import call, patch
|
|
|
|
import pytest
|
|
|
|
from plinth.modules.names.components import DomainType
|
|
|
|
from .. import on_domain_added, on_domain_removed
|
|
|
|
|
|
@pytest.fixture(name='domain_types')
|
|
def fixture_domain_types():
|
|
"""Create a domain types required for tests."""
|
|
DomainType('domain-type-tor', 'Tor Onion Service', 'tor:index',
|
|
can_have_certificate=False)
|
|
DomainType('domain-type-test', 'Test Domain Type', 'test:index')
|
|
|
|
|
|
@pytest.mark.usefixtures('domain_types')
|
|
def test_add_onion_domain():
|
|
"""Test that .onion domains are ignored when added/removed."""
|
|
assert not on_domain_added('test', 'domain-type-tor', 'ddddd.onion')
|
|
assert not on_domain_removed('test', 'domain-type-tor', 'ddddd.onion')
|
|
|
|
|
|
@patch('plinth.modules.letsencrypt.get_status')
|
|
@patch('plinth.modules.letsencrypt.certificate_obtain')
|
|
@pytest.mark.usefixtures('load_cfg')
|
|
@pytest.mark.parametrize('domain,status_input,obtain,result', [
|
|
('domain1.tld', {
|
|
'certificate_available': True,
|
|
'validity': 'not-valid'
|
|
}, True, True),
|
|
('domain2.tld', {
|
|
'certificate_available': False,
|
|
'validity': 'valid'
|
|
}, True, True),
|
|
('domain3.tld', {
|
|
'certificate_available': True,
|
|
'validity': 'valid'
|
|
}, False, False),
|
|
('', {
|
|
'certificate_available': False,
|
|
'validity': 'valid'
|
|
}, False, True),
|
|
])
|
|
def test_add_valid_domain(certificate_obtain, get_status, domain, status_input,
|
|
obtain, result):
|
|
"""Test adding a domain that can have certificates."""
|
|
get_status.return_value = {'domains': {domain: status_input}}
|
|
assert result == on_domain_added('test', 'domain-type-test', domain)
|
|
if obtain:
|
|
certificate_obtain.assert_has_calls([call(domain)])
|
|
else:
|
|
certificate_obtain.assert_not_called()
|
|
|
|
|
|
@patch('plinth.modules.letsencrypt.certificate_revoke')
|
|
@pytest.mark.usefixtures('load_cfg')
|
|
@pytest.mark.parametrize('domain,revoke,result', [
|
|
('domain1.tld', True, True),
|
|
('', False, True),
|
|
])
|
|
def test_remove_domain(certificate_revoke, domain, revoke, result):
|
|
"""Test removing a domain that can certificates."""
|
|
assert result == on_domain_removed('test', 'domain-type-test', domain)
|
|
if revoke:
|
|
certificate_revoke.assert_has_calls(
|
|
[call(domain, really_revoke=False)])
|
|
else:
|
|
certificate_revoke.assert_not_called()
|