import pytest import os from os import path from tests.conftest import global_data_dir from selfprivacy_api.utils import get_dkim_key, get_domain ############################################################################### DKIM_FILE_CONTENT = b'selector._domainkey\tIN\tTXT\t( "v=DKIM1; k=rsa; "\n\t "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNn/IhEz1SxgHxxxI8vlPYC2dNueiLe1GC4SYz8uHimC8SDkMvAwm7rqi2SimbFgGB5nccCNOqCkrIqJTCB9vufqBnVKAjshHqpOr5hk4JJ1T/AGQKWinstmDbfTLPYTbU8ijZrwwGeqQLlnXR5nSN0GB9GazheA9zaPsT6PV+aQIDAQAB" ) ; ----- DKIM key selector for test-domain.tld\n' @pytest.fixture def dkim_file(mocker, tmpdir, generic_userdata): domain = get_domain() assert domain is not None assert domain != "" # In a separate folder to not interfere with dkim backups dkim_dir = path.join(tmpdir, "dkim") os.mkdir(dkim_dir) filename = domain + ".selector.txt" dkim_path = path.join(dkim_dir, filename) with open(dkim_path, "wb") as file: file.write(DKIM_FILE_CONTENT) mocker.patch("selfprivacy_api.utils.DKIM_DIR", dkim_dir) mocker.patch("selfprivacy_api.services.DKIM_DIR", dkim_dir) return dkim_path @pytest.fixture def no_dkim_file(dkim_file): os.remove(dkim_file) assert path.exists(dkim_file) is False return dkim_file ############################################################################### def test_get_dkim_key(dkim_file): """Test DKIM key""" dkim_key = get_dkim_key("test-domain.tld") assert ( dkim_key == "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNn/IhEz1SxgHxxxI8vlPYC2dNueiLe1GC4SYz8uHimC8SDkMvAwm7rqi2SimbFgGB5nccCNOqCkrIqJTCB9vufqBnVKAjshHqpOr5hk4JJ1T/AGQKWinstmDbfTLPYTbU8ijZrwwGeqQLlnXR5nSN0GB9GazheA9zaPsT6PV+aQIDAQAB" ) def test_no_dkim_key(no_dkim_file): """Test no DKIM key""" dkim_key = get_dkim_key("test-domain.tld") assert dkim_key is None