1044 ('OneFetchStep', [('Any GN,L WHERE X in_group G, X login L, G name GN, EXISTS(X copain T, T is EUser), NOT EXISTS(X copain T2, T2 is EUser), G is EGroup, X is EUser', |
1044 ('OneFetchStep', [('Any GN,L WHERE X in_group G, X login L, G name GN, EXISTS(X copain T, T is EUser), NOT EXISTS(X copain T2, T2 is EUser), G is EGroup, X is EUser', |
1045 [{'G': 'EGroup', 'GN': 'String', 'L': 'String', 'T': 'EUser', 'T2': 'EUser', 'X': 'EUser'}])], |
1045 [{'G': 'EGroup', 'GN': 'String', 'L': 'String', 'T': 'EUser', 'T2': 'EUser', 'X': 'EUser'}])], |
1046 None, None, [self.system], |
1046 None, None, [self.system], |
1047 {'T': 'table0.C0', 'T2': 'table1.C0', |
1047 {'T': 'table0.C0', 'T2': 'table1.C0', |
1048 'X': 'table2.C1', 'X.login': 'table2.C0', 'L': 'table2.C0'}, [])]) |
1048 'X': 'table2.C1', 'X.login': 'table2.C0', 'L': 'table2.C0'}, [])]) |
|
1049 |
|
1050 def test_exists_security_no_invariant(self): |
|
1051 ueid = self.session.user.eid |
|
1052 self._test('Any X,AA,AB,AC,AD ORDERBY AA WHERE X is EUser, X login AA, X firstname AB, X surname AC, X modification_date AD, A eid %(B)s, \ |
|
1053 EXISTS(((X identity A) OR \ |
|
1054 (EXISTS(X in_group C, C name IN("managers", "staff"), C is EGroup))) OR \ |
|
1055 (EXISTS(X in_group D, A in_group D, NOT D name "users", D is EGroup)))', |
|
1056 [('FetchStep', [('Any X,AA,AB,AC,AD WHERE X login AA, X firstname AB, X surname AC, X modification_date AD, X is EUser', |
|
1057 [{'AA': 'String', 'AB': 'String', 'AC': 'String', 'AD': 'Datetime', |
|
1058 'X': 'EUser'}])], |
|
1059 [self.ldap, self.system], None, {'AA': 'table0.C1', 'AB': 'table0.C2', |
|
1060 'AC': 'table0.C3', 'AD': 'table0.C4', |
|
1061 'X': 'table0.C0', |
|
1062 'X.firstname': 'table0.C2', |
|
1063 'X.login': 'table0.C1', |
|
1064 'X.modification_date': 'table0.C4', |
|
1065 'X.surname': 'table0.C3'}, []), |
|
1066 ('OneFetchStep', [('Any X,AA,AB,AC,AD ORDERBY AA WHERE X login AA, X firstname AB, X surname AC, X modification_date AD, EXISTS(((X identity 5) OR (EXISTS(X in_group C, C name IN("managers", "staff"), C is EGroup))) OR (EXISTS(X in_group D, 5 in_group D, NOT D name "users", D is EGroup))), X is EUser', |
|
1067 [{'AA': 'String', 'AB': 'String', 'AC': 'String', 'AD': 'Datetime', |
|
1068 'C': 'EGroup', 'D': 'EGroup', 'X': 'EUser'}])], |
|
1069 None, None, [self.system], |
|
1070 {'AA': 'table0.C1', 'AB': 'table0.C2', 'AC': 'table0.C3', 'AD': 'table0.C4', |
|
1071 'X': 'table0.C0', |
|
1072 'X.firstname': 'table0.C2', 'X.login': 'table0.C1', 'X.modification_date': 'table0.C4', 'X.surname': 'table0.C3'}, |
|
1073 [])], |
|
1074 {'B': ueid}) |
1049 |
1075 |
1050 def test_relation_need_split(self): |
1076 def test_relation_need_split(self): |
1051 self._test('Any X, S WHERE X in_state S', |
1077 self._test('Any X, S WHERE X in_state S', |
1052 [('UnionStep', None, None, [ |
1078 [('UnionStep', None, None, [ |
1053 ('OneFetchStep', [('Any X,S WHERE X in_state S, S is State, X is IN(Affaire, EUser)', |
1079 ('OneFetchStep', [('Any X,S WHERE X in_state S, S is State, X is IN(Affaire, EUser)', |