@@ -2,7 +2,6 @@ use crate::models::token::{CrateScope, EndpointScope};
2
2
use crate :: tests:: builders:: CrateBuilder ;
3
3
use crate :: tests:: owners:: expire_invitation;
4
4
use crate :: tests:: util:: { RequestHelper , TestApp } ;
5
- use crate :: tests:: OwnerResp ;
6
5
use http:: StatusCode ;
7
6
use insta:: assert_snapshot;
8
7
@@ -17,16 +16,8 @@ async fn test_cargo_invite_owners() {
17
16
let new_user = app. db_new_user ( "cilantro" ) ;
18
17
CrateBuilder :: new ( "guacamole" , owner. as_model ( ) . id ) . expect_build ( & mut conn) ;
19
18
20
- #[ derive( Serialize ) ]
21
- struct OwnerReq {
22
- owners : Option < Vec < String > > ,
23
- }
24
-
25
- let body = serde_json:: to_string ( & OwnerReq {
26
- owners : Some ( vec ! [ new_user. as_model( ) . gh_login. clone( ) ] ) ,
27
- } ) ;
28
- let json: OwnerResp = owner
29
- . put ( "/api/v1/crates/guacamole/owners" , body. unwrap ( ) )
19
+ let json = owner
20
+ . add_named_owner ( "guacamole" , & new_user. as_model ( ) . gh_login )
30
21
. await
31
22
. good ( ) ;
32
23
@@ -52,10 +43,7 @@ async fn owner_change_via_cookie() {
52
43
53
44
let krate = CrateBuilder :: new ( "foo_crate" , cookie. as_model ( ) . id ) . expect_build ( & mut conn) ;
54
45
55
- let url = format ! ( "/api/v1/crates/{}/owners" , krate. name) ;
56
- let body = json ! ( { "owners" : [ user2. gh_login] } ) ;
57
- let body = serde_json:: to_vec ( & body) . unwrap ( ) ;
58
- let response = cookie. put :: < ( ) > ( & url, body) . await ;
46
+ let response = cookie. add_named_owner ( & krate. name , & user2. gh_login ) . await ;
59
47
assert_eq ! ( response. status( ) , StatusCode :: OK ) ;
60
48
assert_snapshot ! ( response. text( ) , @r#"{"msg":"user user-2 has been invited to be an owner of crate foo_crate","ok":true}"# ) ;
61
49
}
@@ -70,10 +58,7 @@ async fn owner_change_via_token() {
70
58
71
59
let krate = CrateBuilder :: new ( "foo_crate" , token. as_model ( ) . user_id ) . expect_build ( & mut conn) ;
72
60
73
- let url = format ! ( "/api/v1/crates/{}/owners" , krate. name) ;
74
- let body = json ! ( { "owners" : [ user2. gh_login] } ) ;
75
- let body = serde_json:: to_vec ( & body) . unwrap ( ) ;
76
- let response = token. put :: < ( ) > ( & url, body) . await ;
61
+ let response = token. add_named_owner ( & krate. name , & user2. gh_login ) . await ;
77
62
assert_eq ! ( response. status( ) , StatusCode :: OK ) ;
78
63
assert_snapshot ! ( response. text( ) , @r#"{"msg":"user user-2 has been invited to be an owner of crate foo_crate","ok":true}"# ) ;
79
64
}
@@ -90,10 +75,7 @@ async fn owner_change_via_change_owner_token() {
90
75
91
76
let krate = CrateBuilder :: new ( "foo_crate" , token. as_model ( ) . user_id ) . expect_build ( & mut conn) ;
92
77
93
- let url = format ! ( "/api/v1/crates/{}/owners" , krate. name) ;
94
- let body = json ! ( { "owners" : [ user2. gh_login] } ) ;
95
- let body = serde_json:: to_vec ( & body) . unwrap ( ) ;
96
- let response = token. put :: < ( ) > ( & url, body) . await ;
78
+ let response = token. add_named_owner ( & krate. name , & user2. gh_login ) . await ;
97
79
assert_eq ! ( response. status( ) , StatusCode :: OK ) ;
98
80
assert_snapshot ! ( response. text( ) , @r#"{"msg":"user user-2 has been invited to be an owner of crate foo_crate","ok":true}"# ) ;
99
81
}
@@ -110,10 +92,7 @@ async fn owner_change_via_change_owner_token_with_matching_crate_scope() {
110
92
111
93
let krate = CrateBuilder :: new ( "foo_crate" , token. as_model ( ) . user_id ) . expect_build ( & mut conn) ;
112
94
113
- let url = format ! ( "/api/v1/crates/{}/owners" , krate. name) ;
114
- let body = json ! ( { "owners" : [ user2. gh_login] } ) ;
115
- let body = serde_json:: to_vec ( & body) . unwrap ( ) ;
116
- let response = token. put :: < ( ) > ( & url, body) . await ;
95
+ let response = token. add_named_owner ( & krate. name , & user2. gh_login ) . await ;
117
96
assert_eq ! ( response. status( ) , StatusCode :: OK ) ;
118
97
assert_snapshot ! ( response. text( ) , @r#"{"msg":"user user-2 has been invited to be an owner of crate foo_crate","ok":true}"# ) ;
119
98
}
@@ -130,10 +109,7 @@ async fn owner_change_via_change_owner_token_with_wrong_crate_scope() {
130
109
131
110
let krate = CrateBuilder :: new ( "foo_crate" , token. as_model ( ) . user_id ) . expect_build ( & mut conn) ;
132
111
133
- let url = format ! ( "/api/v1/crates/{}/owners" , krate. name) ;
134
- let body = json ! ( { "owners" : [ user2. gh_login] } ) ;
135
- let body = serde_json:: to_vec ( & body) . unwrap ( ) ;
136
- let response = token. put :: < ( ) > ( & url, body) . await ;
112
+ let response = token. add_named_owner ( & krate. name , & user2. gh_login ) . await ;
137
113
assert_eq ! ( response. status( ) , StatusCode :: FORBIDDEN ) ;
138
114
assert_snapshot ! ( response. text( ) , @r#"{"errors":[{"detail":"this token does not have the required permissions to perform this action"}]}"# ) ;
139
115
}
@@ -150,10 +126,7 @@ async fn owner_change_via_publish_token() {
150
126
151
127
let krate = CrateBuilder :: new ( "foo_crate" , token. as_model ( ) . user_id ) . expect_build ( & mut conn) ;
152
128
153
- let url = format ! ( "/api/v1/crates/{}/owners" , krate. name) ;
154
- let body = json ! ( { "owners" : [ user2. gh_login] } ) ;
155
- let body = serde_json:: to_vec ( & body) . unwrap ( ) ;
156
- let response = token. put :: < ( ) > ( & url, body) . await ;
129
+ let response = token. add_named_owner ( & krate. name , & user2. gh_login ) . await ;
157
130
assert_eq ! ( response. status( ) , StatusCode :: FORBIDDEN ) ;
158
131
assert_snapshot ! ( response. text( ) , @r#"{"errors":[{"detail":"this token does not have the required permissions to perform this action"}]}"# ) ;
159
132
}
@@ -168,10 +141,7 @@ async fn owner_change_without_auth() {
168
141
169
142
let krate = CrateBuilder :: new ( "foo_crate" , cookie. as_model ( ) . id ) . expect_build ( & mut conn) ;
170
143
171
- let url = format ! ( "/api/v1/crates/{}/owners" , krate. name) ;
172
- let body = json ! ( { "owners" : [ user2. gh_login] } ) ;
173
- let body = serde_json:: to_vec ( & body) . unwrap ( ) ;
174
- let response = anon. put :: < ( ) > ( & url, body) . await ;
144
+ let response = anon. add_named_owner ( & krate. name , & user2. gh_login ) . await ;
175
145
assert_eq ! ( response. status( ) , StatusCode :: FORBIDDEN ) ;
176
146
assert_snapshot ! ( response. text( ) , @r#"{"errors":[{"detail":"this action requires authentication"}]}"# ) ;
177
147
}
@@ -289,10 +259,7 @@ async fn test_unknown_crate() {
289
259
let ( app, _, user) = TestApp :: full ( ) . with_user ( ) ;
290
260
app. db_new_user ( "bar" ) ;
291
261
292
- let body = json ! ( { "owners" : [ "bar" ] } ) ;
293
- let body = serde_json:: to_vec ( & body) . unwrap ( ) ;
294
-
295
- let response = user. put :: < ( ) > ( "/api/v1/crates/unknown/owners" , body) . await ;
262
+ let response = user. add_named_owner ( "unknown" , "bar" ) . await ;
296
263
assert_eq ! ( response. status( ) , StatusCode :: NOT_FOUND ) ;
297
264
assert_snapshot ! ( response. text( ) , @r#"{"errors":[{"detail":"crate `unknown` does not exist"}]}"# ) ;
298
265
}
@@ -304,8 +271,7 @@ async fn test_unknown_user() {
304
271
305
272
CrateBuilder :: new ( "foo" , cookie. as_model ( ) . id ) . expect_build ( & mut conn) ;
306
273
307
- let body = serde_json:: to_vec ( & json ! ( { "owners" : [ "unknown" ] } ) ) . unwrap ( ) ;
308
- let response = cookie. put :: < ( ) > ( "/api/v1/crates/foo/owners" , body) . await ;
274
+ let response = cookie. add_named_owner ( "foo" , "unknown" ) . await ;
309
275
assert_eq ! ( response. status( ) , StatusCode :: BAD_REQUEST ) ;
310
276
assert_snapshot ! ( response. text( ) , @r#"{"errors":[{"detail":"could not find user with login `unknown`"}]}"# ) ;
311
277
}
@@ -317,8 +283,9 @@ async fn test_unknown_team() {
317
283
318
284
CrateBuilder :: new ( "foo" , cookie. as_model ( ) . id ) . expect_build ( & mut conn) ;
319
285
320
- let body = serde_json:: to_vec ( & json ! ( { "owners" : [ "github:unknown:unknown" ] } ) ) . unwrap ( ) ;
321
- let response = cookie. put :: < ( ) > ( "/api/v1/crates/foo/owners" , body) . await ;
286
+ let response = cookie
287
+ . add_named_owner ( "foo" , "github:unknown:unknown" )
288
+ . await ;
322
289
assert_eq ! ( response. status( ) , StatusCode :: BAD_REQUEST ) ;
323
290
assert_snapshot ! ( response. text( ) , @r#"{"errors":[{"detail":"could not find the github team unknown/unknown. Make sure that you have the right permissions in GitHub. See https://doc.rust-lang.org/cargo/reference/publishing.html#github-permissions"}]}"# ) ;
324
291
}
0 commit comments