summaryrefslogtreecommitdiff
path: root/tests/conftest.py
blob: 5dcc456268092f77371a9b18273ba5cd4f8414b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# etoolkit
# Copyright (C) 2021-2022 Simeon Simeonov

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
"""Common fixtures"""
import json

import pytest


@pytest.fixture
def config_data():
    """config_data for testing"""
    return {
        'general': {
            'MASTER_PASSWORD_HASH': (
                'pbkdf2_sha256$100000$uYpZM1VfAGq0CDZL2duITs076CQj+hIFEgx+F4m'
                'n80o=$h3PSPLCd37fP15zKdW4CBGn7CXE+q5UiydaF3vbeZHo='
            )
        },
        'instances': {
            '_default': {
                'ETOOLKIT_PROMPT': '(%i)',
                'PYTHONPATH': '/home/foo/%i/python',
            },
            'dev': {
                'ETOOLKIT_PARENT': '_default',
                'PYTHONPATH': '%p:/home/user/%i/.pythonpath',
            },
            'secret': {
                'ETOOLKIT_PARENT': '_default',
                'ETOOLKIT_SENSITIVE': ['PASSWORD'],
                'GNUPGHOME': '%h/private/.gnupg',
                'PASSWORD': (
                    'enc-val$1$vIBcoCNiYrsDLtF41uLuSEnppBjhliD0B8jwcBJcj/c=$Kw'
                    'OGe/y1dlxktDaCnJPIVNuaQ4Q7yNo='
                ),
            },
        },
    }


@pytest.fixture
def config_file(tmp_path, config_data):
    """temporary config file for testing that includes config_data"""
    cf = tmp_path / "etoolkit.json"
    cf.write_text(json.dumps(config_data))
    return str(cf)


@pytest.fixture
def non_random_bytes_32():
    """always use the same bytes instead of os.urandom(32)"""
    return (
        b'\xb9\x8aY3U_\x00j\xb4\x086K\xd9\xdb\x88N'
        b'\xcd;\xe8$#\xfa\x12\x05\x12\x0c~\x17\x89\xa7\xf3J'
    )


@pytest.fixture
def password_hash():
    """password hash for testing, corresponding to 'The very secret passwd'"""
    return (
        'pbkdf2_sha256$100000$uYpZM1VfAGq0CDZL2duITs076CQj+hIFEgx+F4mn80o=$h3'
        'PSPLCd37fP15zKdW4CBGn7CXE+q5UiydaF3vbeZHo='
    )