11from __future__ import annotations
22
33import tempfile
4+ from datetime import datetime
45from pathlib import Path
56from typing import Type
67
78from click .testing import CliRunner
89from django .core .management import call_command
10+ from django .utils import timezone
911
1012from sentry .incidents .models import (
1113 AlertRule ,
2123 DashboardWidgetQuery ,
2224 DashboardWidgetTypes ,
2325)
24- from sentry .models .environment import Environment
26+ from sentry .models .environment import Environment , EnvironmentProject
27+ from sentry .models .options .project_option import ProjectOption
28+ from sentry .models .options .user_option import UserOption
2529from sentry .models .organization import Organization
30+ from sentry .models .organizationaccessrequest import OrganizationAccessRequest
31+ from sentry .models .organizationmapping import OrganizationMapping
32+ from sentry .models .organizationmember import OrganizationMember
33+ from sentry .models .organizationmemberteam import OrganizationMemberTeam
34+ from sentry .models .project import Project
35+ from sentry .models .projectbookmark import ProjectBookmark
36+ from sentry .models .projectkey import ProjectKey
37+ from sentry .models .projectownership import ProjectOwnership
38+ from sentry .models .projectredirect import ProjectRedirect
39+ from sentry .models .projectteam import ProjectTeam
40+ from sentry .models .team import Team
41+ from sentry .models .user import User
42+ from sentry .models .useremail import UserEmail
43+ from sentry .models .userip import UserIP
44+ from sentry .models .userpermission import UserPermission
45+ from sentry .models .userrole import UserRole , UserRoleUser
2646from sentry .monitors .models import Monitor , MonitorEnvironment , MonitorType , ScheduleType
2747from sentry .runner .commands .backup import import_ , validate
2848from sentry .silo import unguarded_write
@@ -169,6 +189,13 @@ def test_environment(self):
169189 self .create_environment ()
170190 return self .import_export_then_validate ()
171191
192+ @targets_models (EnvironmentProject )
193+ def test_environment_project (self ):
194+ env = self .create_environment ()
195+ project = self .create_project ()
196+ EnvironmentProject .objects .create (project = project , environment = env , is_hidden = False )
197+ return self .import_export_then_validate ()
198+
172199 @targets_models (Monitor )
173200 def test_monitor (self ):
174201 self .create_monitor ()
@@ -184,8 +211,76 @@ def test_monitor_environment(self):
184211 )
185212 return self .import_export_then_validate ()
186213
187- @targets_models (Organization )
214+ @targets_models (Organization , OrganizationMapping )
188215 def test_organization (self ):
189216 user = self .create_user ()
190217 self .create_organization (owner = user )
191218 return self .import_export_then_validate ()
219+
220+ @targets_models (OrganizationAccessRequest , OrganizationMember , OrganizationMemberTeam , Team )
221+ def test_organization_membership (self ):
222+ organization = self .create_organization (name = "test_org" , owner = self .user )
223+ user = self .
create_user (
"[email protected] " )
224+ member = self .create_member (organization = organization , user = user , role = "member" )
225+ team = self .create_team (name = "foo" , organization = organization )
226+
227+ self .create_team_membership (user = user , team = team )
228+ OrganizationAccessRequest .objects .create (member = member , team = team )
229+ return self .import_export_then_validate ()
230+
231+ @targets_models (Project , ProjectKey , ProjectOption , ProjectTeam )
232+ def test_project (self ):
233+ self .create_project ()
234+ return self .import_export_then_validate ()
235+
236+ @targets_models (ProjectBookmark )
237+ def test_project_bookmark (self ):
238+ user = self .create_user ()
239+ project = self .create_project ()
240+ self .create_project_bookmark (project = project , user = user )
241+ return self .import_export_then_validate ()
242+
243+ @targets_models (ProjectKey )
244+ def test_project_key (self ):
245+ project = self .create_project ()
246+ self .create_project_key (project )
247+ return self .import_export_then_validate ()
248+
249+ @targets_models (ProjectOwnership )
250+ def test_project_ownership (self ):
251+ project = self .create_project ()
252+ ProjectOwnership .objects .create (
253+ project = project , raw = '{"hello":"hello"}' , schema = {"hello" : "hello" }
254+ )
255+ return self .import_export_then_validate ()
256+
257+ @targets_models (ProjectRedirect )
258+ def test_project_redirect (self ):
259+ project = self .create_project ()
260+ ProjectRedirect .record (project , "old_slug" )
261+ return self .import_export_then_validate ()
262+
263+ @targets_models (User , UserEmail , UserOption , UserPermission )
264+ def test_user (self ):
265+ user = self .create_user ()
266+ self .add_user_permission (user , "users.admin" )
267+ UserOption .objects .create (user = user , key = "timezone" , value = "Europe/Vienna" )
268+ return self .import_export_then_validate ()
269+
270+ @targets_models (UserIP )
271+ def test_user_ip (self ):
272+ user = self .create_user ()
273+ UserIP .objects .create (
274+ user = user ,
275+ ip_address = "127.0.0.2" ,
276+ first_seen = datetime (2012 , 4 , 5 , 3 , 29 , 45 , tzinfo = timezone .utc ),
277+ last_seen = datetime (2012 , 4 , 5 , 3 , 29 , 45 , tzinfo = timezone .utc ),
278+ )
279+ return self .import_export_then_validate ()
280+
281+ @targets_models (UserRole , UserRoleUser )
282+ def test_user_role (self ):
283+ user = self .create_user ()
284+ role = UserRole .objects .create (name = "test-role" )
285+ UserRoleUser .objects .create (user = user , role = role )
286+ return self .import_export_then_validate ()
0 commit comments