# 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 . """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=' )