def test_alt_parent_inherit_user(self): # Test inheritance of "user" scope definitions coll_id = "newcoll" newcoll = Collection.create(self.testsite, coll_id, collection_create_values(coll_id)) user1 = AnnalistUser.create(self.testcoll, "user1", annalistuser_create_values(user_id="user1")) user2 = AnnalistUser.create(newcoll, "user2", annalistuser_create_values(user_id="user2")) altparents = newcoll.set_alt_entities(self.testcoll) parentids = [ p.get_id() for p in altparents ] self.assertEqual(parentids, ["newcoll", "testcoll", layout.SITEDATA_ID]) self.assertFalse(AnnalistUser.exists(newcoll, "user1", altscope="user")) self.assertTrue(AnnalistUser.exists(newcoll, "_default_user_perms", altscope="user")) # Access site data self.assertTrue(AnnalistUser.exists(newcoll, "user2", altscope="user")) testuser = AnnalistUser.load(newcoll, "user2", altscope="user") self.assertEquals(testuser["rdfs:label"], "Test User") return
def test_get_local_user_uri_mismatch(self): c = self.testcoll usr = AnnalistUser.create(c, "user1", annalistuser_create_values(user_id="user1")) ugp = c.get_user_permissions("user1", "mailto:[email protected]") self.assertIsNone(ugp) return
def test_annalistuser_create_load(self): usr = AnnalistUser.create(self.testcoll, "user1", annalistuser_create_values(user_id="user1")) uld = AnnalistUser.load(self.testcoll, "user1").get_values() ued = annalistuser_read_values(user_id="user1") self.assertKeysMatch(uld, ued) self.assertDictionaryMatch(uld, ued) return
def test_get_local_user_missing_fields(self): # E.g. what happens if user record is created through default view? Don't return value. d = annalistuser_create_values(user_id="user1") d.pop(ANNAL.CURIE.user_permission) usr = AnnalistUser.create(self.testcoll, "user1", d) ugp = self.testcoll.get_user_permissions("user1", "mailto:[email protected]") self.assertIsNone(ugp) return
def test_annalistuser_create_load(self): usr = AnnalistUser.create( self.testcoll, "user1", annalistuser_create_values(user_id="user1") ) uld = AnnalistUser.load(self.testcoll, "user1").get_values() ued = annalistuser_read_values(user_id="user1") self.assertKeysMatch(ued, uld) self.assertDictionaryMatch(ued, uld) return
def test_get_user_uri_mismatch(self): s = self.testsite c = s.site_data_collection() # Create local permissions usr = AnnalistUser.create(c, "user1", annalistuser_create_values(user_id="user1")) # Test access to permissions defined locally in collection ugp = s.get_user_permissions("user1", "mailto:[email protected]") self.assertIsNone(ugp) return
def test_get_local_user_permissions(self): # Create local permissions usr = AnnalistUser.create(self.testcoll, "user1", annalistuser_create_values(user_id="user1")) # Test access to permissions defined locally in collection ugp = self.testcoll.get_user_permissions("user1", "mailto:[email protected]") self.assertEqual(ugp[ANNAL.CURIE.id], "user1") self.assertEqual(ugp[ANNAL.CURIE.type_id], "_user") self.assertEqual(ugp[RDFS.CURIE.label], "Test User") self.assertEqual(ugp[RDFS.CURIE.comment], "User user1: permissions for Test User in collection testcoll") self.assertEqual(ugp[ANNAL.CURIE.user_uri], "mailto:[email protected]") self.assertEqual(ugp[ANNAL.CURIE.user_permission], ["VIEW", "CREATE", "UPDATE", "DELETE", "CONFIG", "ADMIN"]) return
def test_annalistuser1_data(self): usr = AnnalistUser(self.testcoll, "user1", self.testsite) self.assertEqual(usr.get_id(), "user1") self.assertEqual(usr.get_type_id(), "_user") self.assertIn("/c/testcoll/_annalist_collection/users/user1/", usr.get_url()) self.assertEqual(TestBaseUri + "/c/testcoll/d/_user/user1/", usr.get_view_url()) usr.set_values(annalistuser_create_values(user_id="user1")) td = usr.get_values() self.assertEqual(set(td.keys()), set(annalistuser_value_keys())) v = annalistuser_values(user_id="user1") self.assertDictionaryMatch(td, v) return
def test_annalistuser2_data(self): usr = AnnalistUser(self.testcoll, "user2") self.assertEqual(usr.get_id(), "user2") self.assertEqual(usr.get_type_id(), layout.USER_TYPEID) self.assertIn("/c/testcoll/d/%(user_dir)s/user2/" % self.layout, usr.get_url()) self.assertEqual( TestBaseUri + "/c/testcoll/d/%(user_typeid)s/user2/" % self.layout, usr.get_view_url()) usr.set_values(annalistuser_create_values(user_id="user2")) ugv = usr.get_values() self.assertEqual(set(ugv.keys()), set(annalistuser_value_keys())) uev = annalistuser_values(user_id="user2") self.assertDictionaryMatch(ugv, uev) return
def no_test_post_confirmed_remove_user(self): t = AnnalistUser.create(self.testcoll, "deleteuser", annalistuser_create_values("deleteuser")) self.assertTrue(AnnalistUser.exists(self.testcoll, "deleteuser")) # Submit positive confirmation u = TestHostUri + annalistuser_edit_url("delete", "testcoll") f = annalistuser_delete_confirm_form_data("deleteuser") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") self.assertMatch(r['location'], "^"+TestHostUri+ collection_edit_url("testcoll")+ r"\?info_head=.*&info_message=.*deletetype.*testcoll.*$" ) # Confirm deletion self.assertFalse(AnnalistUser.exists(self.testcoll, "deletetype")) return
def test_annalistuser2_data(self): usr = AnnalistUser(self.testcoll, "user2") self.assertEqual(usr.get_id(), "user2") self.assertEqual(usr.get_type_id(), layout.USER_TYPEID) self.assertIn( "/c/testcoll/_annalist_collection/%(user_dir)s/user2/"%self.layout, usr.get_url() ) self.assertEqual( TestBaseUri + "/c/testcoll/d/%(user_typeid)s/user2/"%self.layout, usr.get_view_url() ) usr.set_values(annalistuser_create_values(user_id="user2")) ugv = usr.get_values() self.assertEqual(set(ugv.keys()), set(annalistuser_value_keys())) uev = annalistuser_values(user_id="user2") self.assertDictionaryMatch(ugv, uev) return
def no_test_post_confirmed_remove_user(self): t = AnnalistUser.create(self.testcoll, "deleteuser", annalistuser_create_values("deleteuser")) self.assertTrue(AnnalistUser.exists(self.testcoll, "deleteuser")) # Submit positive confirmation u = TestHostUri + annalistuser_edit_url("delete", "testcoll") f = annalistuser_delete_confirm_form_data("deleteuser") r = self.client.post(u, f) self.assertEqual(r.status_code, 302) self.assertEqual(r.reason_phrase, "FOUND") self.assertEqual(r.content, "") self.assertMatch( r['location'], "^" + TestHostUri + collection_edit_url("testcoll") + r"\?info_head=.*&info_message=.*deletetype.*testcoll.*$") # Confirm deletion self.assertFalse(AnnalistUser.exists(self.testcoll, "deletetype")) return
def setUp(self): init_annalist_test_site() self.testsite = Site(TestBaseUri, TestBaseDir) self.testcoll = Collection(self.testsite, "testcoll") # populate site with different classes of users: admin, config, create, update, delete, view self.user_admin = AnnalistUser.create( self.testcoll, "user_admin", annalistuser_create_values( coll_id="testcoll", user_id="user_admin", user_name="Admin User", user_uri="mailto:user_admin@%s" % TestHost, user_permissions=[ "VIEW", "CREATE", "UPDATE", "DELETE", "CONFIG", "ADMIN" ])) self.user_config = AnnalistUser.create( self.testcoll, "user_config", annalistuser_create_values( coll_id="testcoll", user_id="user_config", user_name="Admin User", user_uri="mailto:user_config@%s" % TestHost, user_permissions=[ "VIEW", "CREATE", "UPDATE", "DELETE", "CONFIG" ])) self.user_create = AnnalistUser.create( self.testcoll, "user_create", annalistuser_create_values( coll_id="testcoll", user_id="user_create", user_name="Admin User", user_uri="mailto:user_create@%s" % TestHost, user_permissions=["VIEW", "UPDATE", "CREATE"])) self.user_update = AnnalistUser.create( self.testcoll, "user_update", annalistuser_create_values(coll_id="testcoll", user_id="user_update", user_name="Admin User", user_uri="mailto:user_update@%s" % TestHost, user_permissions=["VIEW", "UPDATE"])) self.user_delete = AnnalistUser.create( self.testcoll, "user_delete", annalistuser_create_values( coll_id="testcoll", user_id="user_delete", user_name="Admin User", user_uri="mailto:user_delete@%s" % TestHost, user_permissions=["VIEW", "UPDATE", "DELETE"])) self.user_view = AnnalistUser.create( self.testcoll, "user_view", annalistuser_create_values(coll_id="testcoll", user_id="user_view", user_name="Admin User", user_uri="mailto:user_view@%s" % TestHost, user_permissions=["VIEW"])) self.user_site_admin = AnnalistUser.create( self.testsite, "user_site_admin", annalistuser_create_values( coll_id="testcoll", user_id="user_site_admin", user_name="Site_admin User", user_uri="mailto:user_site_admin@%s" % TestHost, user_permissions=[ "VIEW", "CREATE", "UPDATE", "DELETE", "CONFIG", "ADMIN" ]), use_altpath=True) self.user_site_create_coll = AnnalistUser.create( self.testsite, "user_site_create_coll", annalistuser_create_values( coll_id="testcoll", user_id="user_site_create_coll", user_name="Site_create User", user_uri="mailto:user_site_create_coll@%s" % TestHost, user_permissions=["VIEW", "CREATE_COLLECTION"]), use_altpath=True) self.user_site_delete_coll = AnnalistUser.create( self.testsite, "user_site_delete_coll", annalistuser_create_values( coll_id="testcoll", user_id="user_site_delete_coll_coll", user_name="Site_delete User", user_uri="mailto:user_site_delete_coll@%s" % TestHost, user_permissions=[ "VIEW", "CREATE_COLLECTION", "DELETE_COLLECTION" ]), use_altpath=True) self.user_site_view = AnnalistUser.create( self.testsite, "user_site_view", annalistuser_create_values(coll_id="testcoll", user_id="user_site_view", user_name="Site_view User", user_uri="mailto:user_site_view@%s" % TestHost, user_permissions=["VIEW"]), use_altpath=True) return
def test_get_local_user_uri_mismatch(self): usr = AnnalistUser.create(self.testcoll, "user1", annalistuser_create_values(user_id="user1")) ugp = self.testcoll.get_user_permissions("user1", "mailto:[email protected]") self.assertIsNone(ugp) return