|
|
|
@ -158,6 +158,27 @@ class TrialTestWRPC_DisplayWallet(WalletRPCTestBase, unittest.TestCase): |
|
|
|
yield handler(body, response.code) |
|
|
|
yield handler(body, response.code) |
|
|
|
return True |
|
|
|
return True |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@defer.inlineCallbacks |
|
|
|
|
|
|
|
def do_session_request(self, agent, addr, handler=None, token=None): |
|
|
|
|
|
|
|
""" A `None` value for handler is reserved for the case |
|
|
|
|
|
|
|
where we expect an Unauthorized request because we provided a token, |
|
|
|
|
|
|
|
but it is not valid. |
|
|
|
|
|
|
|
For other cases, provide the url prefix before `/session' as addr, |
|
|
|
|
|
|
|
and we expect a 200 if token is valid *or* token is None, but contents |
|
|
|
|
|
|
|
are to be checked by provided response handler callback. |
|
|
|
|
|
|
|
""" |
|
|
|
|
|
|
|
if handler is None: |
|
|
|
|
|
|
|
assert token is not None |
|
|
|
|
|
|
|
handler = self.unauthorized_session_request_handler |
|
|
|
|
|
|
|
yield self.do_request(agent, b"GET", (addr+"/session").encode(), |
|
|
|
|
|
|
|
None, handler, token) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def authorized_session_request_handler(self, response, code): |
|
|
|
|
|
|
|
assert code == 200 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def unauthorized_session_request_handler(self, response, code): |
|
|
|
|
|
|
|
assert code == 401 |
|
|
|
|
|
|
|
|
|
|
|
@defer.inlineCallbacks |
|
|
|
@defer.inlineCallbacks |
|
|
|
def test_create_list_lock_unlock(self): |
|
|
|
def test_create_list_lock_unlock(self): |
|
|
|
""" A batch of tests in sequence here, |
|
|
|
""" A batch of tests in sequence here, |
|
|
|
@ -195,6 +216,13 @@ class TrialTestWRPC_DisplayWallet(WalletRPCTestBase, unittest.TestCase): |
|
|
|
yield self.do_request(agent, b"POST", addr, body, |
|
|
|
yield self.do_request(agent, b"POST", addr, body, |
|
|
|
self.process_create_wallet_response) |
|
|
|
self.process_create_wallet_response) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 1a. Session request with valid token; should succeed |
|
|
|
|
|
|
|
yield self.do_session_request(agent, root, |
|
|
|
|
|
|
|
self.authorized_session_request_handler, token=self.jwt_token) |
|
|
|
|
|
|
|
# 1b. Session request without token, even though one is active; should succeed |
|
|
|
|
|
|
|
yield self.do_session_request(agent, root, |
|
|
|
|
|
|
|
self.authorized_session_request_handler) |
|
|
|
|
|
|
|
|
|
|
|
# 2. now *lock* |
|
|
|
# 2. now *lock* |
|
|
|
addr = root + "/wallet/" + wfn1 + "/lock" |
|
|
|
addr = root + "/wallet/" + wfn1 + "/lock" |
|
|
|
addr = addr.encode() |
|
|
|
addr = addr.encode() |
|
|
|
@ -202,6 +230,13 @@ class TrialTestWRPC_DisplayWallet(WalletRPCTestBase, unittest.TestCase): |
|
|
|
yield self.do_request(agent, b"GET", addr, None, |
|
|
|
yield self.do_request(agent, b"GET", addr, None, |
|
|
|
self.process_lock_response, token=self.jwt_token) |
|
|
|
self.process_lock_response, token=self.jwt_token) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 2a. Session request with now invalid token; should fail |
|
|
|
|
|
|
|
yield self.do_session_request(agent, root, |
|
|
|
|
|
|
|
self.unauthorized_session_request_handler, token=self.jwt_token) |
|
|
|
|
|
|
|
# 2b. Session request without token, should still succeed. |
|
|
|
|
|
|
|
yield self.do_session_request(agent, root, |
|
|
|
|
|
|
|
self.authorized_session_request_handler) |
|
|
|
|
|
|
|
|
|
|
|
# 3. Create this secondary wallet (so we can test re-unlock) |
|
|
|
# 3. Create this secondary wallet (so we can test re-unlock) |
|
|
|
addr = root + "/wallet/create" |
|
|
|
addr = root + "/wallet/create" |
|
|
|
addr = addr.encode() |
|
|
|
addr = addr.encode() |
|
|
|
|