def create_client(self): dataset = DictDBWrap(USERDB) client = Client({}, client_authn_methods=CLIENT_AUTHN_METHOD) self.rsh = ResourceSetHandler(dataset, client, "hans") self.rsh.dataset.scopes2op[ 'https://dirg.org.umu.se/uma/read'] = self.rsh.dataset.get self.rsh.client.provider_info = { "resource_set_registration_endpoint": 'https://as.example.com/rsr' } self.rsh.token["PAT"] = 'pat'
"givenName": "Hans", "sn": "Granberg", "eduPersonNickname": "Hasse", "email": "*****@*****.**", }, "linda": { "displayName": "Linda Lindgren", "eduPersonNickname": "Linda", "givenName": ["Linda", "Maria"], "sn": "Lindgren", "email": "*****@*****.**", "uid": "linda" } } dataset = DictDBWrap(USERDB.copy()) dataset.scopes2op['https://www.example.com/uma/read'] = dataset.get info_store = {} RS_PORT = 8089 RS_HOST = "https://localhost:%s" % RS_PORT ressrv = ResourceServer(dataset, "linda", info_store, client_authn_methods=CLIENT_AUTHN_METHOD) ressrv.rs_handler.op2scope['GET'] = 'https://www.example.com/uma/read' # ============================== 1 =========================================== # Connect RS to AS
def create_db(self): self.dw = DictDBWrap(USERDB.copy()) self.dw.scopes2op["https://dirg.org.umu.se/uma/read"] = self.dw.get
class TestDictDBWrap(object): @pytest.fixture(autouse=True) def create_db(self): self.dw = DictDBWrap(USERDB.copy()) self.dw.scopes2op["https://dirg.org.umu.se/uma/read"] = self.dw.get def test_build_resource_set_descriptions(self): rsd = self.dw.build_resource_set_descriptions("hans") assert len(rsd) == 5 # Pick one resource set description and check it rs = rsd["hans:sn:Granberg"] assert isinstance(rs, ResourceSetDescription) assert rs["scopes"] == ['https://dirg.org.umu.se/uma/read'] assert rs['name'] == 'hans sn=Granberg' def test_update_resource_set_description_no_change(self): _ = self.dw.build_resource_set_descriptions("hans") diff = self.dw.update_resource_set_description('hans') assert diff == {"delete": [], "add": {}, "update": {}} def test_update_resource_set_description_ava_add(self): _ = self.dw.build_resource_set_descriptions("hans") self.dw.update('hans', {"middleName": "pippi"}) diff = self.dw.update_resource_set_description('hans') assert diff["delete"] == [] assert diff["update"] == {} assert len(diff["add"]) == 1 assert list(diff['add'].keys())[0] == "hans:middleName:pippi" def test_update_resource_set_description_item_del(self): _ = self.dw.build_resource_set_descriptions("hans") self.dw.delete('hans') diff = self.dw.update_resource_set_description('hans') assert _eq(diff["delete"], ['hans:eduPersonNickname:Hasse', 'hans:displayName:Hans Granberg', 'hans:middleName:pippi', 'hans:givenName:Hans', 'hans:sn:Granberg', 'hans:email:[email protected]']) assert diff["update"] == {} assert diff["add"] == {} def test_get(self): self.dw.update('hans', USERDB["hans"]) ava = self.dw.get('hans') assert _eq(list(ava.keys()), ['sn', 'displayName', 'eduPersonNickname', 'email', 'middleName', 'givenName']) va = self.dw.get('hans', 'sn') assert va == 'Granberg'