Tests that show Bob that Bob is able to issue a WorkOrder via REST.

pull/133/head
jMyles 2017-12-01 16:02:58 -08:00
parent df9f24e612
commit c4cbff3359
2 changed files with 21 additions and 3 deletions

View File

@ -305,5 +305,19 @@ class WorkOrder(object):
receipt_bytes = b"wo:" + ursula_dht_key + keccak_digest(b"".join(pfrags))
receipt_signature = bobs_seal(receipt_bytes)
bob_pubkey_sig = bytes(bobs_seal)
return cls(ursula_dht_key, p_frags, receipt_bytes, receipt_signature, bob_pubkey_sig)
return cls(kfrag_hrac, pfrags, receipt_bytes, receipt_signature, bob_pubkey_sig, ursula_dht_key)
@classmethod
def from_rest_payload(cls, kfrag_hrac, rest_payload):
payload_splitter = BytestringSplitter(Signature, PublicKey)
signature, bob_pubkey_sig, (receipt_bytes, packed_pfrags) = payload_splitter(rest_payload, msgpack_remainder=True)
pfrags = msgpack.loads(packed_pfrags)
verified = signature.verify(receipt_bytes, bob_pubkey_sig)
if not verified:
raise ValueError("This doesn't appear to be from Bob.")
return cls(kfrag_hrac, pfrags, receipt_bytes, signature, bob_pubkey_sig)
def payload(self):
return bytes(self.receipt_signature) + self.bob_pubkey_sig + msgpack.dumps((self.receipt_bytes, msgpack.dumps(self.pfrags)))

View File

@ -31,10 +31,14 @@ def test_bob_can_issue_a_work_order_to_a_specific_ursula(enacted_policy_group, a
assert len(bob._ursulas) == len(ursulas)
p_frags = (b"llamas", b"dingos")
work_order = bob.generate_work_order(p_frags)
work_orders = bob.generate_work_orders(enacted_policy_group, p_frags, num_ursulas=1)
assert len(work_orders) == 1
networky_stuff = MockNetworkyStuff(ursulas)
bob.issue_work_order(networky_stuff, work_order, num_ursulas=1) # Issue the work order only to the first Ursula.
for ursula_dht_key, work_order in work_orders.items():
bob.get_reencrypted_c_frag(networky_stuff, work_order) # Issue the work order only to the first Ursula.
first_ursula = bob.get_ursula(0)
work_orders_from_bob = first_ursula.work_orders(bob=bob)