@@ -46,24 +46,31 @@ def test_simple(self):
46
46
47
47
48
48
class ReleaseDeploysCreateTest (APITestCase ):
49
+ def setUp (self ):
50
+ user = self .create_user (is_staff = False , is_superuser = False )
51
+ self .org = self .create_organization ()
52
+ self .org .save ()
53
+
54
+ team = self .create_team (organization = self .org )
55
+ self .project = self .create_project (name = "foo" , organization = self .org , teams = [team ])
56
+
57
+ self .create_member (teams = [team ], user = user , organization = self .org )
58
+ self .login_as (user = user )
59
+
49
60
def test_simple (self ):
50
- project = self .create_project (name = "foo" )
51
- release = Release .objects .create (
52
- organization_id = project .organization_id , version = "1" , total_deploys = 0
53
- )
54
- release .add_project (project )
61
+ release = Release .objects .create (organization_id = self .org .id , version = "1" , total_deploys = 0 )
62
+ release .add_project (self .project )
55
63
56
- environment = Environment .objects .create (
57
- organization_id = project .organization_id , name = "production"
58
- )
64
+ environment = Environment .objects .create (organization_id = self .org .id , name = "production" )
59
65
60
66
url = reverse (
61
67
"sentry-api-0-organization-release-deploys" ,
62
- kwargs = {"organization_slug" : project .organization .slug , "version" : release .version },
68
+ kwargs = {
69
+ "organization_slug" : self .org .slug ,
70
+ "version" : release .version ,
71
+ },
63
72
)
64
73
65
- self .login_as (user = self .user )
66
-
67
74
response = self .client .post (
68
75
url , data = {"name" : "foo" , "environment" : "production" , "url" : "https://www.example.com" }
69
76
)
@@ -84,23 +91,102 @@ def test_simple(self):
84
91
assert release .last_deploy_id == deploy .id
85
92
86
93
rpe = ReleaseProjectEnvironment .objects .get (
87
- project = project , release = release , environment = environment
94
+ project = self .project , release = release , environment = environment
95
+ )
96
+ assert rpe .last_deploy_id == deploy .id
97
+
98
+ def test_with_project_slugs (self ):
99
+ project_bar = self .create_project (organization = self .org , name = "bar" )
100
+ release = Release .objects .create (organization_id = self .org .id , version = "1" , total_deploys = 0 )
101
+ release .add_project (self .project )
102
+ release .add_project (project_bar )
103
+
104
+ environment = Environment .objects .create (organization_id = self .org .id , name = "production" )
105
+
106
+ url = reverse (
107
+ "sentry-api-0-organization-release-deploys" ,
108
+ kwargs = {
109
+ "organization_slug" : self .org .slug ,
110
+ "version" : release .version ,
111
+ },
112
+ )
113
+
114
+ response = self .client .post (
115
+ url ,
116
+ data = {
117
+ "name" : "foo_bar" ,
118
+ "environment" : "production" ,
119
+ "url" : "https://www.example.com" ,
120
+ "projects" : [self .project .slug , project_bar .slug ],
121
+ },
122
+ )
123
+ assert response .status_code == 201 , response .content
124
+ assert response .data ["name" ] == "foo_bar"
125
+ assert response .data ["url" ] == "https://www.example.com"
126
+ assert response .data ["environment" ] == "production"
127
+
128
+ deploy = Deploy .objects .get (id = response .data ["id" ])
129
+
130
+ assert deploy .name == "foo_bar"
131
+ assert deploy .environment_id == environment .id
132
+ assert deploy .url == "https://www.example.com"
133
+ assert deploy .release == release
134
+
135
+ release = Release .objects .get (id = release .id )
136
+ assert release .total_deploys == 1
137
+ assert release .last_deploy_id == deploy .id
138
+
139
+ rpe = ReleaseProjectEnvironment .objects .get (
140
+ project = self .project , release = release , environment = environment
141
+ )
142
+ assert rpe .last_deploy_id == deploy .id
143
+
144
+ rpe = ReleaseProjectEnvironment .objects .get (
145
+ project = project_bar , release = release , environment = environment
88
146
)
89
147
assert rpe .last_deploy_id == deploy .id
90
148
149
+ def test_with_invalid_project_slug (self ):
150
+ bar_project = self .create_project (organization = self .org , name = "bar" )
151
+ release = Release .objects .create (organization_id = self .org .id , version = "1" , total_deploys = 0 )
152
+ release .add_project (self .project )
153
+
154
+ url = reverse (
155
+ "sentry-api-0-organization-release-deploys" ,
156
+ kwargs = {
157
+ "organization_slug" : self .org .slug ,
158
+ "version" : release .version ,
159
+ },
160
+ )
161
+
162
+ response = self .client .post (
163
+ url ,
164
+ data = {
165
+ "name" : "foo" ,
166
+ "environment" : "production" ,
167
+ "url" : "https://www.example.com" ,
168
+ "projects" : [bar_project .slug ],
169
+ },
170
+ )
171
+ assert response .status_code == 400 , response .content
172
+ assert response .data ["detail" ]["code" ] == "parameter-validation-error"
173
+ assert "Invalid projects" in response .data ["detail" ]["message" ]
174
+ assert 0 == Deploy .objects .count ()
175
+
91
176
def test_environment_validation_failure (self ):
92
- project = self .create_project (name = "example" )
93
177
release = Release .objects .create (
94
- organization_id = project . organization_id , version = "123" , total_deploys = 0
178
+ organization_id = self . org . id , version = "123" , total_deploys = 0
95
179
)
96
- release .add_project (project )
180
+ release .add_project (self . project )
97
181
98
182
url = reverse (
99
183
"sentry-api-0-organization-release-deploys" ,
100
- kwargs = {"organization_slug" : project .organization .slug , "version" : release .version },
184
+ kwargs = {
185
+ "organization_slug" : self .org .slug ,
186
+ "version" : release .version ,
187
+ },
101
188
)
102
189
103
- self .login_as (user = self .user )
104
190
response = self .client .post (
105
191
url , data = {"name" : "foo" , "environment" : "bad/name" , "url" : "https://www.example.com" }
106
192
)
0 commit comments