• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

SeaweedbrainCY / zero-totp / 16126695263

07 Jul 2025 08:02PM UTC coverage: 92.953% (+0.04%) from 92.918%
16126695263

Pull #270

github

SeaweedbrainCY
Fix test
Pull Request #270: UI improvement

174 of 189 new or added lines in 15 files covered. (92.06%)

139 existing lines in 4 files now uncovered.

12637 of 13595 relevant lines covered (92.95%)

0.93 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

77.27
api/Utils/env_requirements_check.py
1
import re
1✔
2
from  CryptoClasses.serverRSAKeys import ServerRSAKeys
1✔
3
import logging
1✔
4
import ipaddress
1✔
5

6
def test_conf(conf) -> bool:
1✔
7
    ## API
8
    assert isinstance(conf.api.port, int), "api.port is not an integer"
1✔
9
    assert isinstance(conf.api.private_key_path, str), "api.private_key_path is not a string"
1✔
10
    assert isinstance(conf.api.public_key_path, str), "api.public_key_path is not a string"
1✔
11
    try:
1✔
12
        open(conf.api.private_key_path, "r").close()
1✔
13
        open(conf.api.public_key_path, "r").close()
×
14
    except FileNotFoundError:
1✔
15
        logging.info("api.private_key_path or api.public_key_path does not exist. Generating new keys ...")
1✔
16
        rsa_server_keys = ServerRSAKeys()
1✔
17
        rsa_server_keys.generate(private_key_path=conf.api.private_key_path, public_key_path=conf.api.public_key_path)
1✔
18
    except Exception as e:
×
19
        raise Exception(f"api.private_key_path or api.public_key_path is not a valid path. {e}")
×
20
    assert isinstance(conf.api.flask_secret_key, str), "api.flask_secret_key is not a string"
1✔
21
    assert len(conf.api.flask_secret_key) >= 64, "api.flask.secret_key must be at least 64 characters long"
1✔
22
    assert isinstance(conf.api.server_side_encryption_key, bytes), "api.server_side_encryption_key is not a string"
1✔
23
    if conf.api.trusted_proxy != None:
1✔
UNCOV
24
        assert isinstance(conf.api.trusted_proxy, list), "api.trusted_proxy is not a list"
×
UNCOV
25
        for ip in conf.api.trusted_proxy:
×
UNCOV
26
            try:
×
27
                ipaddress.ip_network(ip)
×
28
            except Exception as e:
×
UNCOV
29
                raise Exception(f"api.trusted_proxy contains an invalid ip address. {e}")
×
30
    
31
    if conf.api.session_token_validity != None:
1✔
32
        assert isinstance(conf.api.session_token_validity, int), "api.session_token_validity is not an integer"
1✔
33
        assert conf.api.session_token_validity > 0, "api.session_token_validity must be greater than 0"
1✔
34
    if conf.api.refresh_token_validity != None:
1✔
35
        assert isinstance(conf.api.refresh_token_validity, int), "api.refresh_token_validity is not an integer"
1✔
36
        assert conf.api.refresh_token_validity > 0, "api.refresh_token_validity must be greater than 0"
1✔
37

38
        if conf.api.session_token_validity != None:
1✔
39
            assert conf.api.refresh_token_validity > conf.api.session_token_validity, "api.refresh_token_validity must be greater than api.access_token"
1✔
40

41
        
42
    ## Environment
43
    assert conf.environment.type in ["local", "development", "production"], f"environment.type is not valid. Was expecting local, development or production, got {conf.environment.type}"
1✔
44
    if(conf.environment.type != "local"):
1✔
45
        assert re.match(r"^([a-z0-9|-]+\.)*[a-z0-9|-]+\.[a-z]+$", conf.environment.domain) or conf.environment.domain =="localhost" , f"environment.domain is not a valid domain. Was expecting something like 'example.com'. Got {conf.environment.domain}"
1✔
46

47
    ## Database
48
    assert isinstance(conf.database.database_uri, str), "database.database_uri is not a string"
1✔
49
    assert re.match(r"mysql:\/\/.*:.*@.*:[0-9]*\/.*", conf.database.database_uri) or conf.database.database_uri == "sqlite:///:memory:", "database.database_uri is not a valid uri. Was expecting something like 'mysql://user:password@hostname:port/dbname'"
1✔
50

51
    ## Features
52
    ## Emails
53
    assert isinstance(conf.features.emails.require_email_validation, bool), "features.emails.require_email_validation is not a boolean"
1✔
54
    if conf.features.emails.require_email_validation:
1✔
55
        assert isinstance(conf.features.emails.sender_address, str), "features.emails.sender_address is not a string"
1✔
56
        assert isinstance(conf.features.emails.sender_password , str), "features.emails.sender_password is not a string"
1✔
57
        assert isinstance(conf.features.emails.smtp_server , str), "features.emails.smtp_server is not a string"
1✔
58
        assert isinstance(conf.features.emails.smtp_port , int), "features.emails.smtp_port is not a integer"
1✔
59
        assert isinstance(conf.features.emails.smtp_username , str), "features.emails.smtp_username is not a string"
1✔
60
    
61

62
    ## Ratelimiting 
63
    assert isinstance(conf.features.rate_limiting.login_attempts_limit_per_ip, int), "features.rate_limiting.login_attempts_limit_per_ip is not an integer"
1✔
64
    assert isinstance(conf.features.rate_limiting.send_email_attempts_limit_per_user, int), "features.rate_limiting.send_email_attempts_limit_per_user is not an integer"
1✔
65
    assert isinstance(conf.features.rate_limiting.login_ban_time, int), "features.rate_limiting.login_ban_time is not an integer"
1✔
66
    assert isinstance(conf.features.rate_limiting.email_ban_time, int), "features.rate_limiting.email_ban_time is not an integer"
1✔
67

68
    ## Sentry
69
    if conf.features.sentry != None:
1✔
UNCOV
70
        assert isinstance(conf.features.sentry.dsn, str), "features.sentry.dsn is not a string"
×
71

72
    ## Backup
73
    assert isinstance(conf.features.backup_config.max_age_in_days, int), "features.default_backup_configuration.max_age_in_days is not an integer"
1✔
74
    assert isinstance(conf.features.backup_config.backup_minimum_count, int), "features.default_backup_configuration.backup_minimum_count is not an integer"
1✔
75

76
    ## Signup 
77
    assert isinstance(conf.features.signup_enabled, bool), "features.signup_enabled is not a boolean"
1✔
78

79

80
    ## Google drive 
81
    assert isinstance(conf.features.google_drive.enabled, bool), "features.google_drive.enabled is not a boolean"
1✔
82
    if conf.features.google_drive.enabled:
1✔
83
        assert isinstance(conf.features.google_drive.client_secret_file_path, str), "features.google_drive.client_secret_file_path is not a string"
1✔
84
        try:
1✔
85
            open(conf.features.google_drive.client_secret_file_path, "r").close()
1✔
UNCOV
86
        except FileNotFoundError:
×
UNCOV
87
            logging.error(f"features.google_drive.client_secret_file_path does not exist. Was expecting {conf.features.google_drive.client_secret_file_path}")
×
UNCOV
88
            raise FileNotFoundError(f"features.google_drive.client_secret_file_path does not exist. Was expecting {conf.features.google_drive.client_secret_file_path}")
×
UNCOV
89
        except Exception as e:
×
UNCOV
90
            raise Exception(f"features.google_drive.client_secret_file_path is not a valid path. {e}")
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc