def test_get_root_group_when_not_allowed(self): """Récupération des groupes racines de l'arbre sans les droits""" # Récupération du groupe utilisé lors de ce test. SupItemGroup.by_group_name(u'root') # Création d'un nouvel utilisateur et d'un nouveau groupe usergroup = UserGroup(group_name=u'new_users') vigiboard_perm = Permission.by_permission_name(u'vigiboard-access') usergroup.permissions.append(vigiboard_perm) user = User( user_name=u'new_user', fullname=u'', email=u'user.has.no@access', ) user.usergroups.append(usergroup) DBSession.add(user) DBSession.flush() transaction.commit() # L'utilisateur est authentifié mais n'a aucun accès. Il # cherche à obtenir la liste des groupes racines de l'arbre. response = self.app.get('/get_groups', extra_environ={'REMOTE_USER': '******'}) json = response.json # On s'assure que la liste retournée est bien vide. self.assertEqual( json, { 'items': [], 'groups': [] } )
def test_search_supitemgroup_when_disallowed(self): """Teste la recherche par supitemgroup SANS les droits d'accès.""" # On récupère le groupe de supitems utilisé lors de ce test. group2 = SupItemGroup.by_group_name(u'group2') # L'utilisateur n'est pas authentifié. response = self.app.get('/', status=401) # L'utilisateur est authentifié avec des permissions réduites. # Il effectue une recherche sur un groupe de supitems auquel il # n'a pas accès, mais qui est le fils du groupe parent d'un groupe # auquel il a accès. Il ne doit donc obtenir aucun résultat. environ = {'REMOTE_USER': '******'} response = self.app.get( '/?supitemgroup=%d' % group2.idgroup, extra_environ=environ ) # Il doit y avoir 1 seule ligne dans la réponse. # (la réponse contient le texte "Il n'y a aucun événément", traduit) rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') print "There are %d rows in the result set" % len(rows) assert_equal(len(rows), 1) # Il doit y avoir 1 seule colonne dans la réponse. cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td') print "There are %d columns in the result set" % len(cols) assert_equal(len(cols), 1)
def test_get_group_anonymous(self): """Récupération de l'étage de l'arbre en anonyme""" # Récupération du groupe utilisé lors de ce test. group2 = SupItemGroup.by_group_name(u'group2') # L'utilisateur n'est pas authentifié. # Il cherche à obtenir la liste des groupes fils d'un groupe donné. self.app.get('/get_groups?parent_id=%d' % group2.idgroup, status=401)
def test_get_root_group_when_allowed(self): """Récupération des groupes racines de l'arbre avec les droits""" # Récupération du groupe utilisé lors de ce test. root = SupItemGroup.by_group_name(u'root') # L'utilisateur est authentifié et fait partie du groupe 'managers'. # Il cherche à obtenir la liste des groupes racines de l'arbre. response = self.app.get('/get_groups', extra_environ={'REMOTE_USER': '******'}) json = response.json # On s'assure que la liste retournée contient bien le groupe racine. self.assertEqual( json, { 'items': [], 'groups': [ {'id': root.idgroup, 'name': root.name, 'type': 'group'} ] } ) # L'utilisateur est authentifié avec des permissions étendues. # Il cherche à obtenir la liste des groupes racines de l'arbre. response = self.app.get('/get_groups', extra_environ={'REMOTE_USER': '******'}) json = response.json # On s'assure que la liste retournée contient bien le # groupe racine, auquel cet utilisateur a directement accès. self.assertEqual( json, { 'items': [], 'groups': [ {'id': root.idgroup, 'name': root.name, 'type': 'group'} ] } ) # L'utilisateur est authentifié avec des permissions restreintes. # Il cherche à obtenir la liste des groupes racines de l'arbre. response = self.app.get('/get_groups', extra_environ={'REMOTE_USER': '******'}) json = response.json # On s'assure que la liste retournée contient bien le # groupe racine, auquel cet utilisateur a indirectement accès. self.assertEqual( json, { 'items': [], 'groups': [ {'id': root.idgroup, 'name': root.name, 'type': 'group'} ] } )
def test_get_group_when_not_allowed(self): """Récupération de l'étage de l'arbre sans les droits""" # Récupération du groupe utilisé lors de ce test. group2 = SupItemGroup.by_group_name(u'group2') # L'utilisateur est authentifié avec des permissions # restreintes. Il cherche à obtenir la liste des groupes fils # d'un groupe auquel il n'a pas accès, même indirectement. response = self.app.get('/get_groups?parent_id=%d' % group2.idgroup, extra_environ={'REMOTE_USER': '******'}) json = response.json # On s'assure que la liste de groupes retournée est bien vide self.assertEqual( json, {'items': [], 'groups': []} )
def test_get_group_when_allowed(self): """Récupération de l'étage de l'arbre avec les droits""" # Récupération des groupes utilisés lors de ce test. root = SupItemGroup.by_group_name(u'root') maingroup = SupItemGroup.by_group_name(u'maingroup') group1 = SupItemGroup.by_group_name(u'group1') group2 = SupItemGroup.by_group_name(u'group2') # L'utilisateur est authentifié et fait partie du groupe 'managers'. # Il cherche à obtenir la liste des groupes fils d'un groupe donné. response = self.app.get('/get_groups?parent_id=%d' % root.idgroup, extra_environ={'REMOTE_USER': '******'}) json = response.json # On s'assure que la liste retournée contient # bien les groupes fils de ce groupe parent self.assertEqual( json, { 'items': [], 'groups': [ {'id': maingroup.idgroup, 'name': maingroup.name, 'type': 'group'} ] } ) # L'utilisateur est authentifié avec des permissions # étendues. Il cherche à obtenir la liste des groupes # fils d'un groupe auquel il a directement accès. response = self.app.get('/get_groups?parent_id=%d' % root.idgroup, extra_environ={'REMOTE_USER': '******'}) json = response.json # On s'assure que la liste retournée contient # bien les groupes fils de ce groupe parent self.assertEqual( json, { 'items': [], 'groups': [ {'id': maingroup.idgroup, 'name': maingroup.name, 'type': 'group'} ] } ) # Le même utilisateur cherche à obtenir la liste des # groupes fils d'un groupe auquel il a indirectement accès. response = self.app.get('/get_groups?parent_id=%d' % maingroup.idgroup, extra_environ={'REMOTE_USER': '******'}) json = response.json # On s'assure que la liste retournée contient # bien les groupes fils de ce groupe parent. self.assertEqual(json, { 'items': [], 'groups': [ {'id': group1.idgroup, 'name': group1.name, 'type': 'group'}, {'id': group2.idgroup, 'name': group2.name, 'type': 'group'} ] }) # L'utilisateur est authentifié avec des permissions # restreintes. Il cherche à obtenir la liste des groupes # fils d'un groupe auquel il n'a pas accès, mais a toutefois # le droit d'accéder à un des groupes fils en question. response = self.app.get('/get_groups?parent_id=%d' % maingroup.idgroup, extra_environ={'REMOTE_USER': '******'}) json = response.json # On s'assure que la liste retournée contient bien ce groupe fils. self.assertEqual( json, { 'items': [], 'groups': [ {'id': group1.idgroup, 'name': group1.name, 'type': 'group'} ] } ) # Le même utilisateur cherche à obtenir la liste des groupes # fils d'un groupe de niveau encore supérieur. response = self.app.get('/get_groups?parent_id=%d' % root.idgroup, extra_environ={'REMOTE_USER': '******'}) json = response.json # On s'assure que la liste retournée contient bien # le groupe parent du groupe auquel il a accès. self.assertEqual( json, { 'items': [], 'groups': [ {'id': maingroup.idgroup, 'name': maingroup.name, 'type': 'group'} ] } )
def test_search_supitemgroup_when_allowed(self): """Teste la recherche par supitemgroup avec les bons droits d'accès.""" # On récupère les 3 groupes de supitems utilisés lors de ces tests. root = SupItemGroup.by_group_name(u'root') maingroup = SupItemGroup.by_group_name(u'maingroup') group1 = SupItemGroup.by_group_name(u'group1') # L'utilisateur est authentifié avec des permissions réduites. # Il effectue une recherche sur un groupe de supitems auquel # il a accès, on s'attend à ce que la requête retourne 2 résultats. environ = {'REMOTE_USER': '******'} response = self.app.get( '/?supitemgroup=%d' % group1.idgroup, extra_environ=environ ) # Il doit y avoir 2 lignes dans la réponse. rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') print "There are %d rows in the result set" % len(rows) assert_equal(len(rows), 2) # Il doit y avoir plusieurs colonnes dans la réponse. cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td') print "There are %d columns in the result set" % len(cols) assert_true(len(cols) > 1) # Le même utilisateur effectue une recherche sur un groupe de supitems # auquel il n'a pas accès, mais qui est parent du groupe précédent. # On s'attend donc à ce que la requête retourne également 2 résultats. environ = {'REMOTE_USER': '******'} response = self.app.get( '/?supitemgroup=%d' % maingroup.idgroup, extra_environ=environ ) # Il doit y avoir 2 lignes dans la réponse. rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') print "There are %d rows in the result set" % len(rows) assert_equal(len(rows), 2) # Il doit y avoir plusieurs colonnes dans la réponse. cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td') print "There are %d columns in the result set" % len(cols) assert_true(len(cols) > 1) # Le même utilisateur effectue une recherche à partir du groupe racine. # On s'attend donc à ce que la requête retourne également 2 résultats. environ = {'REMOTE_USER': '******'} response = self.app.get( '/?supitemgroup=%d' % root.idgroup, extra_environ=environ ) # Il doit y avoir 2 lignes dans la réponse. rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') print "There are %d rows in the result set" % len(rows) assert_equal(len(rows), 2) # Il doit y avoir plusieurs colonnes dans la réponse. cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td') print "There are %d columns in the result set" % len(cols) assert_true(len(cols) > 1) # L'utilisateur est authentifié avec des permissions plus étendues. # Il effectue une recherche sur un groupe de supitems auquel # il a accès, on s'attend à ce que la requête retourne 5 résultats, # dont 4 grâce à l'héritage de permissions entre les groupes. environ = {'REMOTE_USER': '******'} response = self.app.get( '/?supitemgroup=%d' % maingroup.idgroup, extra_environ=environ ) # Il doit y avoir 5 lignes dans la réponse. rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') print "There are %d rows in the result set" % len(rows) assert_equal(len(rows), 5) # Il doit y avoir plusieurs colonnes dans la réponse. cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td') print "There are %d columns in the result set" % len(cols) assert_true(len(cols) > 1) # L'utilisateur est authentifié et fait partie du groupe # 'managers'. Il effectue une recherche sur un groupe de supitems, # et on s'attend à ce que la requête retourne 5 résultats. environ = {'REMOTE_USER': '******'} response = self.app.get( '/?supitemgroup=%d' % maingroup.idgroup, extra_environ=environ ) # Il doit y avoir 5 lignes dans la réponse. rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') print "There are %d rows in the result set" % len(rows) assert_equal(len(rows), 5) # Il doit y avoir plusieurs colonnes dans la réponse. cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td') print "There are %d columns in the result set" % len(cols) assert_true(len(cols) > 1)