|
1 | 1 | import pytest |
2 | | -from integrations.google_workspace.schemas import ( |
3 | | - Group, |
4 | | - User, |
5 | | - Member, |
| 2 | +from tests.factory_helpers import ( |
| 3 | + make_google_groups, |
| 4 | + make_google_users, |
| 5 | + make_google_members, |
6 | 6 | ) |
7 | 7 |
|
8 | 8 | # Google API Python Client |
9 | 9 |
|
10 | 10 |
|
11 | 11 | # Google Discovery Directory Resource |
12 | | -# Base fixtures |
| 12 | +# Legacy Fixtures |
13 | 13 | @pytest.fixture |
14 | 14 | def google_groups(): |
15 | 15 | def _google_groups(n=3, prefix="", domain="test.com"): |
@@ -75,127 +75,6 @@ def _google_group_members(n=3, prefix="", domain="test.com"): |
75 | 75 | return _google_group_members |
76 | 76 |
|
77 | 77 |
|
78 | | -# --- Google Directory API Pydantic factories --- |
79 | | - |
80 | | - |
81 | | -@pytest.fixture |
82 | | -def google_group_factory(): |
83 | | - """ |
84 | | - Factory fixture to generate a list of valid Google Group dicts for tests. |
85 | | - Usage: |
86 | | - groups = google_group_factory(n=2, prefix="dev-") |
87 | | - # returns a list of dicts (model_dump) |
88 | | - """ |
89 | | - |
90 | | - def _factory(n=3, prefix="", domain="test.com", as_model=False): |
91 | | - groups = [ |
92 | | - Group( |
93 | | - id=f"{prefix}google_group_id{i+1}", |
94 | | - name=f"{prefix}group-name{i+1}", |
95 | | - email=f"{prefix}group-name{i+1}@{domain}", |
96 | | - description=f"{prefix}description{i+1}", |
97 | | - directMembersCount=i + 1, |
98 | | - ) |
99 | | - for i in range(n) |
100 | | - ] |
101 | | - if as_model: |
102 | | - return groups |
103 | | - return [g.model_dump() for g in groups] |
104 | | - |
105 | | - return _factory |
106 | | - |
107 | | - |
108 | | -@pytest.fixture |
109 | | -def google_user_factory(): |
110 | | - """ |
111 | | - Factory fixture to generate a list of valid Google User dicts or models for tests. |
112 | | - Usage: |
113 | | - users = google_user_factory(n=2, prefix="dev-") |
114 | | - # returns a list of dicts (model_dump) |
115 | | - users = google_user_factory(n=2, as_model=True) |
116 | | - # returns a list of User models |
117 | | - """ |
118 | | - |
119 | | - def _factory(n=3, prefix="", domain="test.com", as_model=False): |
120 | | - users = [ |
121 | | - User( |
122 | | - id=f"{prefix}user_id{i+1}", |
123 | | - primaryEmail=f"{prefix}user-email{i+1}@{domain}", |
124 | | - emails=[ |
125 | | - { |
126 | | - "address": f"{prefix}user-email{i+1}@{domain}", |
127 | | - "primary": True, |
128 | | - "type": "work", |
129 | | - } |
130 | | - ], |
131 | | - suspended=False, |
132 | | - name={ |
133 | | - "fullName": f"Given_name_{i+1} Family_name_{i+1}", |
134 | | - "familyName": f"Family_name_{i+1}", |
135 | | - "givenName": f"Given_name_{i+1}", |
136 | | - "displayName": f"Given_name_{i+1} Family_name_{i+1}", |
137 | | - }, |
138 | | - ) |
139 | | - for i in range(n) |
140 | | - ] |
141 | | - if as_model: |
142 | | - return users |
143 | | - return [u.model_dump() for u in users] |
144 | | - |
145 | | - return _factory |
146 | | - |
147 | | - |
148 | | -@pytest.fixture |
149 | | -def google_member_factory(): |
150 | | - """ |
151 | | - Factory fixture to generate a list of valid Google Member dicts or models for tests. |
152 | | - Usage: |
153 | | - members = google_member_factory(n=2, prefix="dev-") |
154 | | - # returns a list of dicts (model_dump) |
155 | | - members = google_member_factory(n=2, as_model=True) |
156 | | - # returns a list of Member models |
157 | | - """ |
158 | | - |
159 | | - def _factory(n=3, prefix="", domain="test.com", as_model=False): |
160 | | - users = [ |
161 | | - User( |
162 | | - id=f"{prefix}user_id{i+1}", |
163 | | - primaryEmail=f"{prefix}user-email{i+1}@{domain}", |
164 | | - emails=[ |
165 | | - { |
166 | | - "address": f"{prefix}user-email{i+1}@{domain}", |
167 | | - "primary": True, |
168 | | - "type": "work", |
169 | | - } |
170 | | - ], |
171 | | - suspended=False, |
172 | | - name={ |
173 | | - "fullName": f"Given_name_{i+1} Family_name_{i+1}", |
174 | | - "familyName": f"Family_name_{i+1}", |
175 | | - "givenName": f"Given_name_{i+1}", |
176 | | - "displayName": f"Given_name_{i+1} Family_name_{i+1}", |
177 | | - }, |
178 | | - ) |
179 | | - for i in range(n) |
180 | | - ] |
181 | | - members = [ |
182 | | - Member( |
183 | | - kind="admin#directory#member", |
184 | | - email=user.primaryEmail, |
185 | | - role="MEMBER", |
186 | | - type="USER", |
187 | | - status="ACTIVE", |
188 | | - id=user.id, |
189 | | - ) |
190 | | - for user in users |
191 | | - ] |
192 | | - if as_model: |
193 | | - return members |
194 | | - return [m.model_dump() for m in members] |
195 | | - |
196 | | - return _factory |
197 | | - |
198 | | - |
199 | 78 | # Fixture with users |
200 | 79 | @pytest.fixture |
201 | 80 | def google_groups_w_users(google_groups, google_group_members, google_users): |
@@ -264,6 +143,61 @@ def _factory(n_groups=1, n_members_per_group=2, domain="test.com"): |
264 | 143 | return _factory |
265 | 144 |
|
266 | 145 |
|
| 146 | +# --- Google Directory API Pydantic factories --- |
| 147 | + |
| 148 | + |
| 149 | +@pytest.fixture |
| 150 | +def google_group_factory(): |
| 151 | + """ |
| 152 | + Factory fixture to generate a list of valid Google Group dicts for tests. |
| 153 | + Usage: |
| 154 | + groups = google_group_factory(n=2, prefix="dev-") |
| 155 | + # returns a list of dicts (model_dump) |
| 156 | + """ |
| 157 | + |
| 158 | + def _factory(n=3, prefix="", domain="test.com", as_model=False): |
| 159 | + # Delegate to shared helper to avoid duplicated logic |
| 160 | + return make_google_groups(n=n, prefix=prefix, domain=domain, as_model=as_model) |
| 161 | + |
| 162 | + return _factory |
| 163 | + |
| 164 | + |
| 165 | +@pytest.fixture |
| 166 | +def google_user_factory(): |
| 167 | + """ |
| 168 | + Factory fixture to generate a list of valid Google User dicts or models for tests. |
| 169 | + Usage: |
| 170 | + users = google_user_factory(n=2, prefix="dev-") |
| 171 | + # returns a list of dicts (model_dump) |
| 172 | + users = google_user_factory(n=2, as_model=True) |
| 173 | + # returns a list of User models |
| 174 | + """ |
| 175 | + |
| 176 | + def _factory(n=3, prefix="", domain="test.com", as_model=False): |
| 177 | + # Delegate to shared helper to avoid duplicated logic |
| 178 | + return make_google_users(n=n, prefix=prefix, domain=domain, as_model=as_model) |
| 179 | + |
| 180 | + return _factory |
| 181 | + |
| 182 | + |
| 183 | +@pytest.fixture |
| 184 | +def google_member_factory(): |
| 185 | + """ |
| 186 | + Factory fixture to generate a list of valid Google Member dicts or models for tests. |
| 187 | + Usage: |
| 188 | + members = google_member_factory(n=2, prefix="dev-") |
| 189 | + # returns a list of dicts (model_dump) |
| 190 | + members = google_member_factory(n=2, as_model=True) |
| 191 | + # returns a list of Member models |
| 192 | + """ |
| 193 | + |
| 194 | + def _factory(n=3, prefix="", domain="test.com", as_model=False): |
| 195 | + # Delegate to shared helper to avoid duplicated logic |
| 196 | + return make_google_members(n=n, prefix=prefix, domain=domain, as_model=as_model) |
| 197 | + |
| 198 | + return _factory |
| 199 | + |
| 200 | + |
267 | 201 | @pytest.fixture |
268 | 202 | def google_batch_response_factory(): |
269 | 203 | """Factory to create Google API batch response structures.""" |
|
0 commit comments