98 lines
2.5 KiB
Python
98 lines
2.5 KiB
Python
import tempfile
|
|
import os.path
|
|
import unittest
|
|
import json
|
|
|
|
from wheel.signatures import keys
|
|
|
|
wheel_json = """
|
|
{
|
|
"verifiers": [
|
|
{
|
|
"scope": "+",
|
|
"vk": "bp-bjK2fFgtA-8DhKKAAPm9-eAZcX_u03oBv2RlKOBc"
|
|
},
|
|
{
|
|
"scope": "+",
|
|
"vk": "KAHZBfyqFW3OcFDbLSG4nPCjXxUPy72phP9I4Rn9MAo"
|
|
},
|
|
{
|
|
"scope": "+",
|
|
"vk": "tmAYCrSfj8gtJ10v3VkvW7jOndKmQIYE12hgnFu3cvk"
|
|
}
|
|
],
|
|
"signers": [
|
|
{
|
|
"scope": "+",
|
|
"vk": "tmAYCrSfj8gtJ10v3VkvW7jOndKmQIYE12hgnFu3cvk"
|
|
},
|
|
{
|
|
"scope": "+",
|
|
"vk": "KAHZBfyqFW3OcFDbLSG4nPCjXxUPy72phP9I4Rn9MAo"
|
|
}
|
|
],
|
|
"schema": 1
|
|
}
|
|
"""
|
|
|
|
class TestWheelKeys(unittest.TestCase):
|
|
def setUp(self):
|
|
self.config = tempfile.NamedTemporaryFile(suffix='.json')
|
|
self.config.close()
|
|
|
|
self.config_path, self.config_filename = os.path.split(self.config.name)
|
|
def load(*args):
|
|
return [self.config_path]
|
|
def save(*args):
|
|
return self.config_path
|
|
keys.load_config_paths = load
|
|
keys.save_config_path = save
|
|
self.wk = keys.WheelKeys()
|
|
self.wk.CONFIG_NAME = self.config_filename
|
|
|
|
def tearDown(self):
|
|
os.unlink(self.config.name)
|
|
|
|
def test_load_save(self):
|
|
self.wk.data = json.loads(wheel_json)
|
|
|
|
self.wk.add_signer('+', '67890')
|
|
self.wk.add_signer('scope', 'abcdefg')
|
|
|
|
self.wk.trust('epocs', 'gfedcba')
|
|
self.wk.trust('+', '12345')
|
|
|
|
self.wk.save()
|
|
|
|
del self.wk.data
|
|
self.wk.load()
|
|
|
|
signers = self.wk.signers('scope')
|
|
self.assertTrue(signers[0] == ('scope', 'abcdefg'), self.wk.data['signers'])
|
|
self.assertTrue(signers[1][0] == '+', self.wk.data['signers'])
|
|
|
|
trusted = self.wk.trusted('epocs')
|
|
self.assertTrue(trusted[0] == ('epocs', 'gfedcba'))
|
|
self.assertTrue(trusted[1][0] == '+')
|
|
|
|
self.wk.untrust('epocs', 'gfedcba')
|
|
trusted = self.wk.trusted('epocs')
|
|
self.assertTrue(('epocs', 'gfedcba') not in trusted)
|
|
|
|
def test_load_save_incomplete(self):
|
|
self.wk.data = json.loads(wheel_json)
|
|
del self.wk.data['signers']
|
|
self.wk.data['schema'] = self.wk.SCHEMA+1
|
|
self.wk.save()
|
|
try:
|
|
self.wk.load()
|
|
except ValueError:
|
|
pass
|
|
else:
|
|
raise Exception("Expected ValueError")
|
|
|
|
del self.wk.data['schema']
|
|
self.wk.save()
|
|
self.wk.load()
|
|
|
|
|