|
1 |
| -from __future__ import absolute_import |
2 |
| - |
3 |
| -import unittest |
| 1 | +import pytest |
4 | 2 |
|
5 | 3 | from cwltool.secrets import SecretStore
|
6 | 4 |
|
7 | 5 | from .util import get_data
|
8 | 6 |
|
9 |
| - |
10 |
| -class TestSecrets(unittest.TestCase): |
11 |
| - def test_secrets(self): |
12 |
| - secrets = SecretStore() |
13 |
| - job = {"foo": "bar", |
14 |
| - "baz": "quux"} |
15 |
| - secrets.store(["foo"], job) |
16 |
| - self.assertNotEquals(job["foo"], "bar") |
17 |
| - self.assertEquals(job["baz"], "quux") |
18 |
| - self.assertEquals(secrets.retrieve(job)["foo"], "bar") |
19 |
| - |
20 |
| - hello = "hello %s" % job["foo"] |
21 |
| - self.assertTrue(secrets.has_secret(hello)) |
22 |
| - self.assertNotEquals(hello, "hello bar") |
23 |
| - self.assertEquals(secrets.retrieve(hello), "hello bar") |
24 |
| - |
25 |
| - hello2 = ["echo", "hello %s" % job["foo"]] |
26 |
| - self.assertTrue(secrets.has_secret(hello2)) |
27 |
| - self.assertNotEquals(hello2, ["echo", "hello bar"]) |
28 |
| - self.assertEquals(secrets.retrieve(hello2), ["echo", "hello bar"]) |
29 |
| - |
30 |
| - hello3 = {"foo": job["foo"]} |
31 |
| - print(hello3) |
32 |
| - self.assertTrue(secrets.has_secret(hello3)) |
33 |
| - self.assertNotEquals(hello3, {"foo": "bar"}) |
34 |
| - self.assertEquals(secrets.retrieve(hello3), {"foo": "bar"}) |
35 |
| - |
36 |
| - self.assertNotEquals(job["foo"], "bar") |
37 |
| - self.assertEquals(job["baz"], "quux") |
| 7 | +@pytest.fixture |
| 8 | +def secrets(): |
| 9 | + sec_store = SecretStore() |
| 10 | + job = {'foo': 'bar', |
| 11 | + 'baz': 'quux'} |
| 12 | + |
| 13 | + sec_store.store(['foo'], job) |
| 14 | + return sec_store, job |
| 15 | + |
| 16 | +def test_obscuring(secrets): |
| 17 | + storage, obscured = secrets |
| 18 | + assert obscured['foo'] != 'bar' |
| 19 | + assert obscured['baz'] == 'quux' |
| 20 | + assert storage.retrieve(obscured)['foo'] == 'bar' |
| 21 | + |
| 22 | +obscured_factories_expected = [ |
| 23 | + ((lambda x: 'hello %s' % x), 'hello bar'), |
| 24 | + ((lambda x: ['echo', 'hello %s' % x]), ['echo', 'hello bar']), |
| 25 | + ((lambda x: {'foo': x}), {'foo': 'bar'}), |
| 26 | +] |
| 27 | + |
| 28 | +@pytest.mark.parametrize('factory,expected', obscured_factories_expected) |
| 29 | +def test_secrets(factory, expected, secrets): |
| 30 | + storage, obscured = secrets |
| 31 | + pattern = factory(obscured['foo']) |
| 32 | + assert pattern != expected |
| 33 | + |
| 34 | + assert storage.has_secret(pattern) |
| 35 | + assert storage.retrieve(pattern) == expected |
| 36 | + |
| 37 | + assert obscured['foo'] != 'bar' |
| 38 | + assert obscured['baz'] == 'quux' |
0 commit comments