|
3 | 3 | from didcomm.core.serialization import dict_to_json |
4 | 4 | from didcomm.message import Message |
5 | 5 | from didcomm.pack_encrypted import pack_encrypted |
6 | | -from didcomm.protocols.routing.forward import unpack_forward, wrap_in_forward |
| 6 | +from didcomm.protocols.routing.forward import ( |
| 7 | + unpack_forward, |
| 8 | + wrap_in_forward, |
| 9 | + ForwardMessage, |
| 10 | + is_forward, |
| 11 | +) |
7 | 12 | from didcomm.unpack import unpack, UnpackConfig |
8 | 13 | from tests.test_vectors.common import ALICE_DID, BOB_DID |
9 | 14 |
|
10 | 15 |
|
11 | 16 | @pytest.mark.asyncio |
12 | | -async def test_mediator_re_wrap_to_receiver( |
| 17 | +async def test_mediator_re_wrap_anoncrypt_to_receiver( |
| 18 | + resolvers_config_alice, resolvers_config_bob, resolvers_config_mediator1 |
| 19 | +): |
| 20 | + # ALICE |
| 21 | + message = Message( |
| 22 | + body={"aaa": 1, "bbb": 2}, |
| 23 | + id="1234567890", |
| 24 | + type="my-protocol/1.0", |
| 25 | + to=[BOB_DID], |
| 26 | + created_time=1516269022, |
| 27 | + expires_time=1516385931, |
| 28 | + ) |
| 29 | + pack_result = await pack_encrypted( |
| 30 | + resolvers_config=resolvers_config_alice, |
| 31 | + message=message, |
| 32 | + to=BOB_DID, |
| 33 | + ) |
| 34 | + |
| 35 | + # BOB MEDIATOR 1: re-wrap to Bob |
| 36 | + old_forward_bob = await unpack_forward( |
| 37 | + resolvers_config_mediator1, pack_result.packed_msg, True |
| 38 | + ) |
| 39 | + new_packed_forward_bob = await wrap_in_forward( |
| 40 | + resolvers_config=resolvers_config_mediator1, |
| 41 | + packed_msg=old_forward_bob.forwarded_msg, |
| 42 | + to=old_forward_bob.forward_msg.body.next, |
| 43 | + routing_keys=[old_forward_bob.forward_msg.body.next], |
| 44 | + headers={"expires_time": 99999}, |
| 45 | + ) |
| 46 | + |
| 47 | + # BOB |
| 48 | + unpack_result_bob = await unpack( |
| 49 | + resolvers_config_bob, |
| 50 | + dict_to_json(new_packed_forward_bob.msg_encrypted.msg), |
| 51 | + unpack_config=UnpackConfig(unwrap_re_wrapping_forward=True), |
| 52 | + ) |
| 53 | + |
| 54 | + assert unpack_result_bob.message == message |
| 55 | + assert unpack_result_bob.metadata.re_wrapped_in_forward |
| 56 | + |
| 57 | + |
| 58 | +@pytest.mark.asyncio |
| 59 | +async def test_mediator_re_wrap_authcrypt_to_receiver( |
13 | 60 | resolvers_config_alice, resolvers_config_bob, resolvers_config_mediator1 |
14 | 61 | ): |
15 | 62 | # ALICE |
@@ -50,3 +97,46 @@ async def test_mediator_re_wrap_to_receiver( |
50 | 97 |
|
51 | 98 | assert unpack_result_bob.message == message |
52 | 99 | assert unpack_result_bob.metadata.re_wrapped_in_forward |
| 100 | + |
| 101 | + |
| 102 | +@pytest.mark.asyncio |
| 103 | +async def test_unwrap_re_wrapping_forward_mode_for_no_re_wrapping( |
| 104 | + resolvers_config_alice, resolvers_config_bob, resolvers_config_mediator1 |
| 105 | +): |
| 106 | + # ALICE |
| 107 | + message = Message( |
| 108 | + body={"aaa": 1, "bbb": 2}, |
| 109 | + id="1234567890", |
| 110 | + type="my-protocol/1.0", |
| 111 | + to=[BOB_DID], |
| 112 | + created_time=1516269022, |
| 113 | + expires_time=1516385931, |
| 114 | + ) |
| 115 | + pack_result = await pack_encrypted( |
| 116 | + resolvers_config=resolvers_config_alice, |
| 117 | + message=message, |
| 118 | + to=BOB_DID, |
| 119 | + ) |
| 120 | + |
| 121 | + # BOB MEDIATOR 1 |
| 122 | + unpack_result_mediator = await unpack( |
| 123 | + resolvers_config_mediator1, |
| 124 | + pack_result.packed_msg, |
| 125 | + unpack_config=UnpackConfig(unwrap_re_wrapping_forward=True), |
| 126 | + ) |
| 127 | + |
| 128 | + msg_mediator_as_dict = unpack_result_mediator.message.as_dict() |
| 129 | + assert is_forward(msg_mediator_as_dict) |
| 130 | + forward_message = ForwardMessage.from_dict(msg_mediator_as_dict) |
| 131 | + assert forward_message.body.next == BOB_DID |
| 132 | + assert not unpack_result_mediator.metadata.re_wrapped_in_forward |
| 133 | + |
| 134 | + # BOB |
| 135 | + unpack_result_bob = await unpack( |
| 136 | + resolvers_config_bob, |
| 137 | + forward_message.forwarded_msg, |
| 138 | + unpack_config=UnpackConfig(unwrap_re_wrapping_forward=True), |
| 139 | + ) |
| 140 | + |
| 141 | + assert unpack_result_bob.message == message |
| 142 | + assert not unpack_result_bob.metadata.re_wrapped_in_forward |
0 commit comments