@@ -2,6 +2,7 @@ use std::sync::ONCE_INIT;
2
2
use conduit:: { Handler , Method } ;
3
3
4
4
use cargo_registry:: user:: NewUser ;
5
+ use cargo_registry:: krate:: EncodableCrate ;
5
6
use record:: GhUser ;
6
7
7
8
// Users: `crates-tester-1` and `crates-tester-2`
@@ -351,3 +352,56 @@ fn add_owners_as_team_owner() {
351
352
json. errors
352
353
) ;
353
354
}
355
+
356
+ #[ test]
357
+ fn crates_by_team_id ( ) {
358
+ let ( _b, app, middle) = :: app ( ) ;
359
+
360
+ let team = {
361
+ let conn = app. diesel_database . get ( ) . unwrap ( ) ;
362
+ let u = :: new_user ( "user_foo" ) . create_or_update ( & conn) . unwrap ( ) ;
363
+ let t = :: new_team ( "team_foo" ) . create_or_update ( & conn) . unwrap ( ) ;
364
+ let krate = :: CrateBuilder :: new ( "foo" , u. id ) . expect_build ( & conn) ;
365
+ :: add_team_to_crate ( & t, & krate, & u, & conn) . unwrap ( ) ;
366
+ t
367
+ } ;
368
+
369
+ let mut req = :: req ( app, Method :: Get , "/api/v1/crates" ) ;
370
+ req. with_query ( & format ! ( "team_id={}" , team. id) ) ;
371
+ let mut response = ok_resp ! ( middle. call( & mut req) ) ;
372
+
373
+ #[ derive( Deserialize ) ]
374
+ struct Response {
375
+ crates : Vec < EncodableCrate > ,
376
+ }
377
+ let response: Response = :: json ( & mut response) ;
378
+ assert_eq ! ( response. crates. len( ) , 1 ) ;
379
+ }
380
+
381
+ #[ test]
382
+ fn crates_by_team_id_not_including_deleted_owners ( ) {
383
+ let ( _b, app, middle) = :: app ( ) ;
384
+
385
+ let team = {
386
+ let conn = app. diesel_database . get ( ) . unwrap ( ) ;
387
+ let u = :: new_user ( "user_foo" ) . create_or_update ( & conn) . unwrap ( ) ;
388
+ let t = :: new_team ( "github:org_foo:team_foo" )
389
+ . create_or_update ( & conn)
390
+ . unwrap ( ) ;
391
+ let krate = :: CrateBuilder :: new ( "foo" , u. id ) . expect_build ( & conn) ;
392
+ :: add_team_to_crate ( & t, & krate, & u, & conn) . unwrap ( ) ;
393
+ krate. owner_remove ( & conn, & u, & t. login ) . unwrap ( ) ;
394
+ t
395
+ } ;
396
+
397
+ let mut req = :: req ( app, Method :: Get , "/api/v1/crates" ) ;
398
+ req. with_query ( & format ! ( "team_id={}" , team. id) ) ;
399
+ let mut response = ok_resp ! ( middle. call( & mut req) ) ;
400
+
401
+ #[ derive( Deserialize ) ]
402
+ struct Response {
403
+ crates : Vec < EncodableCrate > ,
404
+ }
405
+ let response: Response = :: json ( & mut response) ;
406
+ assert_eq ! ( response. crates. len( ) , 0 ) ;
407
+ }
0 commit comments