make tests depend on chatmail.ini, not env var

This commit is contained in:
holger krekel
2023-12-11 00:18:45 +01:00
parent b3fdebf8df
commit bb1b11df15
5 changed files with 12 additions and 80 deletions

View File

@@ -1,4 +1,3 @@
[params] [params]
# mail domain (MUST be set to fully qualified chat mail domain) # mail domain (MUST be set to fully qualified chat mail domain)

View File

@@ -1,65 +0,0 @@
# Chat-mail server development (up until Oct 18th)
## Dovecot goals/steps
- automatic expiry of messages older than M days
- also expunge unread messages
- limit: configure max-connections per account
## nami: send out rate limit / rspamd
- basic outgoing send rate/limits (depending on "account-rating")
use rspamd in a minimal way, check support dkim-signing
(including an online test exceeding rate limit)
## doveauth questions/futures
- bcrypt-password scheme is slow: require long passwords, use faster hashing
- define user-name and password policies, and implement them
(be very restrictive at the beginning, we can relax later)
- password is part of the dictproxy-lookup key, is it safe to use auth-caching?
## How to limit creation of accounts?
attack: a 3-line bash script to fill the chatmail db with millions of unused accouts
- make it computationally expensive (somehow try to except our tests from it)
1st pass instant onboarding: create userid + cheap password -- if it fails then
2nd pass instant onboarding: create userdid + comput. expensive password
- probably also do firewall: limit number of new tcp-connections per IP address per duration
## Open/deferred questions
- automatic expiry of users that haven't logged in for N days
Is it neccessary? If all messages are gone, does the existence of
an e-mail address bother anybody?
## web page for chat-mail servers?
- documentation for users, privacy policy etc.
(probably also with provider-messages ...)
## online tests (first with plain python/pytest)
- write tests for dovecot login (exists)
- write tests for postfix logins (exists)
- write A<>B send/receive tests (exists)
## Delta Chat
1. qr code that defines access to a chatmail instance (like mailadm but without http etc.)
2. support for creating username/password and verifying login works

View File

@@ -3,10 +3,8 @@ import io
import time import time
import random import random
import subprocess import subprocess
import textwrap
import imaplib import imaplib
import smtplib import smtplib
import importlib.resources
import itertools import itertools
from email.parser import BytesParser from email.parser import BytesParser
from email import policy from email import policy
@@ -14,6 +12,7 @@ from pathlib import Path
import pytest import pytest
from chatmaild.database import Database from chatmaild.database import Database
from chatmaild.config import read_config
conftestdir = Path(__file__).parent conftestdir = Path(__file__).parent
@@ -39,13 +38,17 @@ def pytest_runtest_setup(item):
pytest.skip("skipping slow test, use --slow to run") pytest.skip("skipping slow test, use --slow to run")
@pytest.fixture
def chatmail_config(pytestconfig):
path = Path("chatmail.ini").resolve()
if path.exists():
return read_config(path)
pytest.skip(f"no chatmail.ini file found in {path}")
@pytest.fixture @pytest.fixture
def maildomain(): def maildomain(chatmail_config):
domain = os.environ.get("CHATMAIL_DOMAIN") return chatmail_config.mailname
if not domain:
pytest.skip("set CHATMAIL_DOMAIN to a ssh-reachable chatmail instance")
return domain
@pytest.fixture @pytest.fixture
@@ -410,6 +413,7 @@ class CMUser:
@pytest.fixture @pytest.fixture
def make_config(tmp_path): def make_config(tmp_path):
from chatmaild.config import read_config, write_initial_config from chatmaild.config import read_config, write_initial_config
inipath = tmp_path.joinpath("chatmail.ini") inipath = tmp_path.joinpath("chatmail.ini")
def make_conf(mailname): def make_conf(mailname):

View File

@@ -1,6 +1,3 @@
import os
import sys
import pytest import pytest
from deploy_chatmail.cmdeploy import get_parser, main from deploy_chatmail.cmdeploy import get_parser, main
from chatmaild.config import read_config from chatmaild.config import read_config

View File

@@ -1,9 +1,6 @@
import textwrap
import importlib.resources import importlib.resources
from deploy_chatmail.www import build_webpages from deploy_chatmail.www import build_webpages
from chatmaild.config import read_config
def test_build_webpages(tmp_path, make_config): def test_build_webpages(tmp_path, make_config):
@@ -13,4 +10,4 @@ def test_build_webpages(tmp_path, make_config):
config = make_config("chat.example.org") config = make_config("chat.example.org")
build_dir = tmp_path.joinpath("build") build_dir = tmp_path.joinpath("build")
build_webpages(src_dir, build_dir, config) build_webpages(src_dir, build_dir, config)
assert len([x for x in build_dir.iterdir() if x.suffix == '.html']) >= 3 assert len([x for x in build_dir.iterdir() if x.suffix == ".html"]) >= 3