Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F8392880
test_init_cookers.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
test_init_cookers.py
View Options
# Copyright (C) 2017-2020 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
import
os
from
typing
import
Dict
import
pytest
import
yaml
from
swh.vault.cookers
import
COOKER_TYPES
,
get_cooker
from
swh.vault.tests.test_backend
import
TEST_HEX_ID
@pytest.fixture
def
swh_cooker_config
():
return
{
"vault"
:
{
"cls"
:
"remote"
,
"args"
:
{
"url"
:
"mock://vault-backend"
,
"storage"
:
{
"cls"
:
"remote"
,
"url"
:
"mock://storage-url"
},
},
}
}
def
write_config_to_env
(
config
:
Dict
,
tmp_path
,
monkeypatch
)
->
str
:
"""Write the configuration dict into a temporary file, then reference that path to
SWH_CONFIG_FILENAME environment variable.
"""
conf_path
=
os
.
path
.
join
(
str
(
tmp_path
),
"cooker.yml"
)
with
open
(
conf_path
,
"w"
)
as
f
:
f
.
write
(
yaml
.
dump
(
config
))
monkeypatch
.
setenv
(
"SWH_CONFIG_FILENAME"
,
conf_path
)
return
conf_path
def
test_write_to_env
(
swh_cooker_config
,
tmp_path
,
monkeypatch
):
actual_path
=
write_config_to_env
(
swh_cooker_config
,
tmp_path
,
monkeypatch
)
assert
os
.
path
.
exists
(
actual_path
)
is
True
assert
os
.
environ
[
"SWH_CONFIG_FILENAME"
]
==
actual_path
with
open
(
actual_path
,
"r"
)
as
f
:
actual_config
=
yaml
.
safe_load
(
f
.
read
())
assert
actual_config
==
swh_cooker_config
@pytest.mark.parametrize
(
"config_ko,exception_class,exception_msg"
,
[
({},
ValueError
,
"missing 'vault' configuration"
),
(
{
"vault"
:
{
"cls"
:
"local"
}},
EnvironmentError
,
"This vault backend can only be a 'remote' configuration"
,
),
(
{
"vault"
:
{
"cls"
:
"remote"
,
"args"
:
{
"missing-storage-key"
:
""
}}},
ValueError
,
"invalid configuration: missing 'storage' config entry"
,
),
],
)
def
test_get_cooker_config_ko
(
config_ko
,
exception_class
,
exception_msg
,
monkeypatch
,
tmp_path
):
"""Misconfigured cooker should fail the instantiation with exception message
"""
write_config_to_env
(
config_ko
,
tmp_path
,
monkeypatch
)
with
pytest
.
raises
(
exception_class
,
match
=
exception_msg
):
get_cooker
(
"directory"
,
TEST_HEX_ID
)
@pytest.mark.parametrize
(
"config_ok"
,
[
{
"vault"
:
{
"cls"
:
"remote"
,
"args"
:
{
"url"
:
"mock://vault-backend"
,
"storage"
:
{
"cls"
:
"remote"
,
"url"
:
"mock://storage-url"
},
},
}
},
{
"vault"
:
{
"cls"
:
"remote"
,
"args"
:
{
"url"
:
"mock://vault-backend"
,},},
"storage"
:
{
"cls"
:
"remote"
,
"url"
:
"mock://storage-url"
},
},
{
"vault"
:
{
"cls"
:
"remote"
,
"url"
:
"mock://vault-backend"
,},
"storage"
:
{
"cls"
:
"remote"
,
"url"
:
"mock://storage-url"
},
},
],
)
def
test_get_cooker_nominal
(
config_ok
,
tmp_path
,
monkeypatch
):
"""Correct configuration should allow the instantiation of the cookers
"""
for
cooker_type
in
COOKER_TYPES
.
keys
():
write_config_to_env
(
config_ok
,
tmp_path
,
monkeypatch
)
cooker
=
get_cooker
(
cooker_type
,
TEST_HEX_ID
)
assert
cooker
is
not
None
assert
isinstance
(
cooker
,
COOKER_TYPES
[
cooker_type
])
File Metadata
Details
Attached
Mime Type
text/x-python
Expires
Jun 4 2025, 7:04 PM (10 w, 1 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3367931
Attached To
rDVAU Software Heritage Vault
Event Timeline
Log In to Comment