@@ -2,7 +2,6 @@ use crate::models::token::{CrateScope, EndpointScope};
22use crate :: tests:: builders:: CrateBuilder ;
33use crate :: tests:: owners:: expire_invitation;
44use crate :: tests:: util:: { RequestHelper , TestApp } ;
5- use crate :: tests:: OwnerResp ;
65use http:: StatusCode ;
76use insta:: assert_snapshot;
87
@@ -17,16 +16,8 @@ async fn test_cargo_invite_owners() {
1716 let new_user = app. db_new_user ( "cilantro" ) ;
1817 CrateBuilder :: new ( "guacamole" , owner. as_model ( ) . id ) . expect_build ( & mut conn) ;
1918
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 )
3021 . await
3122 . good ( ) ;
3223
@@ -52,10 +43,7 @@ async fn owner_change_via_cookie() {
5243
5344 let krate = CrateBuilder :: new ( "foo_crate" , cookie. as_model ( ) . id ) . expect_build ( & mut conn) ;
5445
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 ;
5947 assert_eq ! ( response. status( ) , StatusCode :: OK ) ;
6048 assert_snapshot ! ( response. text( ) , @r#"{"msg":"user user-2 has been invited to be an owner of crate foo_crate","ok":true}"# ) ;
6149}
@@ -70,10 +58,7 @@ async fn owner_change_via_token() {
7058
7159 let krate = CrateBuilder :: new ( "foo_crate" , token. as_model ( ) . user_id ) . expect_build ( & mut conn) ;
7260
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 ;
7762 assert_eq ! ( response. status( ) , StatusCode :: OK ) ;
7863 assert_snapshot ! ( response. text( ) , @r#"{"msg":"user user-2 has been invited to be an owner of crate foo_crate","ok":true}"# ) ;
7964}
@@ -90,10 +75,7 @@ async fn owner_change_via_change_owner_token() {
9075
9176 let krate = CrateBuilder :: new ( "foo_crate" , token. as_model ( ) . user_id ) . expect_build ( & mut conn) ;
9277
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 ;
9779 assert_eq ! ( response. status( ) , StatusCode :: OK ) ;
9880 assert_snapshot ! ( response. text( ) , @r#"{"msg":"user user-2 has been invited to be an owner of crate foo_crate","ok":true}"# ) ;
9981}
@@ -110,10 +92,7 @@ async fn owner_change_via_change_owner_token_with_matching_crate_scope() {
11092
11193 let krate = CrateBuilder :: new ( "foo_crate" , token. as_model ( ) . user_id ) . expect_build ( & mut conn) ;
11294
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 ;
11796 assert_eq ! ( response. status( ) , StatusCode :: OK ) ;
11897 assert_snapshot ! ( response. text( ) , @r#"{"msg":"user user-2 has been invited to be an owner of crate foo_crate","ok":true}"# ) ;
11998}
@@ -130,10 +109,7 @@ async fn owner_change_via_change_owner_token_with_wrong_crate_scope() {
130109
131110 let krate = CrateBuilder :: new ( "foo_crate" , token. as_model ( ) . user_id ) . expect_build ( & mut conn) ;
132111
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 ;
137113 assert_eq ! ( response. status( ) , StatusCode :: FORBIDDEN ) ;
138114 assert_snapshot ! ( response. text( ) , @r#"{"errors":[{"detail":"this token does not have the required permissions to perform this action"}]}"# ) ;
139115}
@@ -150,10 +126,7 @@ async fn owner_change_via_publish_token() {
150126
151127 let krate = CrateBuilder :: new ( "foo_crate" , token. as_model ( ) . user_id ) . expect_build ( & mut conn) ;
152128
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 ;
157130 assert_eq ! ( response. status( ) , StatusCode :: FORBIDDEN ) ;
158131 assert_snapshot ! ( response. text( ) , @r#"{"errors":[{"detail":"this token does not have the required permissions to perform this action"}]}"# ) ;
159132}
@@ -168,10 +141,7 @@ async fn owner_change_without_auth() {
168141
169142 let krate = CrateBuilder :: new ( "foo_crate" , cookie. as_model ( ) . id ) . expect_build ( & mut conn) ;
170143
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 ;
175145 assert_eq ! ( response. status( ) , StatusCode :: FORBIDDEN ) ;
176146 assert_snapshot ! ( response. text( ) , @r#"{"errors":[{"detail":"this action requires authentication"}]}"# ) ;
177147}
@@ -289,10 +259,7 @@ async fn test_unknown_crate() {
289259 let ( app, _, user) = TestApp :: full ( ) . with_user ( ) ;
290260 app. db_new_user ( "bar" ) ;
291261
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 ;
296263 assert_eq ! ( response. status( ) , StatusCode :: NOT_FOUND ) ;
297264 assert_snapshot ! ( response. text( ) , @r#"{"errors":[{"detail":"crate `unknown` does not exist"}]}"# ) ;
298265}
@@ -304,8 +271,7 @@ async fn test_unknown_user() {
304271
305272 CrateBuilder :: new ( "foo" , cookie. as_model ( ) . id ) . expect_build ( & mut conn) ;
306273
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 ;
309275 assert_eq ! ( response. status( ) , StatusCode :: BAD_REQUEST ) ;
310276 assert_snapshot ! ( response. text( ) , @r#"{"errors":[{"detail":"could not find user with login `unknown`"}]}"# ) ;
311277}
@@ -317,8 +283,9 @@ async fn test_unknown_team() {
317283
318284 CrateBuilder :: new ( "foo" , cookie. as_model ( ) . id ) . expect_build ( & mut conn) ;
319285
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 ;
322289 assert_eq ! ( response. status( ) , StatusCode :: BAD_REQUEST ) ;
323290 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"}]}"# ) ;
324291}
0 commit comments