mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-07 10:56:49 +00:00
more unittests
This commit is contained in:
parent
a8382a5356
commit
41fa8238d5
@ -328,7 +328,7 @@ def create_grid_manager_verifier(keys, certs, now_fn=None, bad_cert=None):
|
||||
# validate the signatures on any certificates we have (not yet the expiry dates)
|
||||
for alleged_cert in certs:
|
||||
for key in keys:
|
||||
cert = _validate_grid_manager_certificate(key, alleged_cert)
|
||||
cert = validate_grid_manager_certificate(key, alleged_cert)
|
||||
if cert is not None:
|
||||
valid_certs.append(cert)
|
||||
else:
|
||||
|
@ -66,6 +66,9 @@ from allmydata.interfaces import (
|
||||
IStorageServer,
|
||||
IFoolscapStoragePlugin,
|
||||
)
|
||||
from allmydata.grid_manager import (
|
||||
create_grid_manager_verifier,
|
||||
)
|
||||
from allmydata.util import log, base32, connection_status
|
||||
from allmydata.util.assertutil import precondition
|
||||
from allmydata.util.observer import ObserverList
|
||||
|
@ -24,6 +24,8 @@ from allmydata.grid_manager import (
|
||||
load_grid_manager,
|
||||
save_grid_manager,
|
||||
create_grid_manager,
|
||||
parse_grid_manager_certificate,
|
||||
create_grid_manager_verifier,
|
||||
)
|
||||
|
||||
from .common import SyncTestCase
|
||||
@ -272,3 +274,52 @@ class GridManagerVerifier(SyncTestCase):
|
||||
"No 'public_key' for storage server",
|
||||
str(ctx.exception),
|
||||
)
|
||||
|
||||
def test_parse_cert(self):
|
||||
"""
|
||||
Parse an ostensibly valid storage certificate
|
||||
"""
|
||||
js = parse_grid_manager_certificate('{"certificate": "", "signature": ""}')
|
||||
self.assertEqual(
|
||||
set(js.keys()),
|
||||
{"certificate", "signature"}
|
||||
)
|
||||
# the signature isn't *valid*, but that's checked in a
|
||||
# different function
|
||||
|
||||
def test_parse_cert_not_dict(self):
|
||||
"""
|
||||
Certificate data not even a dict
|
||||
"""
|
||||
with self.assertRaises(ValueError) as ctx:
|
||||
parse_grid_manager_certificate("[]")
|
||||
self.assertIn(
|
||||
"must be a dict",
|
||||
str(ctx.exception),
|
||||
)
|
||||
|
||||
def test_parse_cert_missing_signature(self):
|
||||
"""
|
||||
Missing the signature
|
||||
"""
|
||||
with self.assertRaises(ValueError) as ctx:
|
||||
parse_grid_manager_certificate('{"certificate": ""}')
|
||||
self.assertIn(
|
||||
"must contain",
|
||||
str(ctx.exception),
|
||||
)
|
||||
|
||||
def test_validate_cert(self):
|
||||
"""
|
||||
Validate a correctly-signed certificate
|
||||
"""
|
||||
priv0, pub0 = ed25519.create_signing_keypair()
|
||||
self.gm.add_storage_server("test0", pub0)
|
||||
cert0 = self.gm.sign("test0", 86400)
|
||||
|
||||
verify = create_grid_manager_verifier(
|
||||
[self.gm._public_key],
|
||||
[cert0],
|
||||
)
|
||||
|
||||
self.assertTrue(verify())
|
||||
|
Loading…
x
Reference in New Issue
Block a user