Harden Sigil: tests/test_sessions.py
This commit is contained in:
parent
71801d31cb
commit
4487f15b9e
@ -6,6 +6,8 @@ import unittest
|
||||
from sigil import errors, identity, keys, sessions, viewcodes
|
||||
from sigil.store import Store
|
||||
|
||||
import helpers
|
||||
|
||||
|
||||
class Base(unittest.TestCase):
|
||||
def setUp(self):
|
||||
@ -16,6 +18,9 @@ class Base(unittest.TestCase):
|
||||
self.store, "bigpickle", keys.export_public_b64(self.public), secret
|
||||
)
|
||||
|
||||
def issue(self, agent="bigpickle", **kw):
|
||||
return helpers.issue(self.store, self.private, agent, **kw)
|
||||
|
||||
def agent_session(self, **kw):
|
||||
chal = identity.challenge(self.store, "bigpickle")
|
||||
sig = base64.b64encode(self.private.sign(chal["nonce"].encode())).decode()
|
||||
@ -54,14 +59,14 @@ class TestAgentSessions(Base):
|
||||
|
||||
class TestHumanSessions(Base):
|
||||
def test_human_session_cannot_act_as_agent(self):
|
||||
code = viewcodes.issue_code(self.store, "bigpickle")
|
||||
code = self.issue("bigpickle")
|
||||
view = viewcodes.redeem_code(self.store, code["code"])
|
||||
session = sessions.resolve(self.store, view["token"])
|
||||
with self.assertRaises(errors.AgentImpersonationDenied):
|
||||
sessions.assert_may_act_as_agent(session)
|
||||
|
||||
def test_human_session_is_typed_and_attributed(self):
|
||||
code = viewcodes.issue_code(self.store, "bigpickle")
|
||||
code = self.issue("bigpickle")
|
||||
view = viewcodes.redeem_code(self.store, code["code"])
|
||||
session = sessions.resolve(self.store, view["token"])
|
||||
self.assertEqual(session["kind"], "human_via_agent")
|
||||
@ -70,7 +75,7 @@ class TestHumanSessions(Base):
|
||||
self.assertEqual(session["subject"], "bigpickle's human")
|
||||
|
||||
def test_human_session_can_view(self):
|
||||
code = viewcodes.issue_code(self.store, "bigpickle")
|
||||
code = self.issue("bigpickle")
|
||||
view = viewcodes.redeem_code(self.store, code["code"])
|
||||
session = sessions.resolve(self.store, view["token"])
|
||||
sessions.require_scope(session, "view:read")
|
||||
@ -89,7 +94,7 @@ class TestHumanSessions(Base):
|
||||
|
||||
def test_long_session_grants_no_extra_capability(self):
|
||||
"""Expiry and authority are separate axes."""
|
||||
short = viewcodes.issue_code(self.store, "bigpickle")
|
||||
short = self.issue("bigpickle")
|
||||
short_session = viewcodes.redeem_code(self.store, short["code"])
|
||||
long_session = sessions.issue_view_session(
|
||||
self.store, "bigpickle", ttl=86400
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user