|
1 | | -use crate::cis::CisFakeClient; |
2 | | -use crate::helpers::get_pool; |
3 | | -use actix_web::middleware::Logger; |
| 1 | +use crate::api::*; |
| 2 | +use crate::db::reset; |
| 3 | +use crate::helpers::read_json; |
| 4 | +use crate::helpers::test_app; |
| 5 | +use crate::helpers::Soa; |
| 6 | +use crate::users::basic_user; |
4 | 7 | use actix_web::test; |
5 | | -use actix_web::web; |
6 | 8 | use actix_web::App; |
| 9 | +use dino_park_trust::GroupsTrust; |
| 10 | +use dino_park_trust::Trust; |
7 | 11 | use failure::Error; |
8 | | -use std::sync::Arc; |
9 | | - |
10 | | -use dino_park_packs::*; |
| 12 | +use serde_json::json; |
11 | 13 |
|
12 | 14 | #[actix_rt::test] |
13 | 15 | async fn basic() -> Result<(), Error> { |
14 | | - let cis_client = Arc::new(CisFakeClient::new()); |
15 | | - let pool = get_pool(); |
16 | | - let app = App::new() |
17 | | - .data(Arc::clone(&cis_client)) |
18 | | - .data(pool.clone()) |
19 | | - .wrap(Logger::default().exclude("/healthz")) |
20 | | - .service(healthz::healthz_app()) |
21 | | - .service(api::internal::internal_app::<CisFakeClient>()) |
22 | | - .service( |
23 | | - web::scope("/groups/api/v1/") |
24 | | - .service(api::groups::groups_app::<CisFakeClient>()) |
25 | | - .service(api::members::members_app::<CisFakeClient>()) |
26 | | - .service(api::current::current_app::<CisFakeClient>()) |
27 | | - .service(api::invitations::invitations_app()) |
28 | | - .service(api::terms::terms_app()) |
29 | | - .service(api::users::users_app()) |
30 | | - .service(api::admins::admins_app::<CisFakeClient>()) |
31 | | - .service(api::sudo::sudo_app::<CisFakeClient>()), |
32 | | - ); |
| 16 | + reset()?; |
| 17 | + let app = App::new().service(test_app().await); |
33 | 18 | let mut app = test::init_service(app).await; |
34 | 19 | let req = test::TestRequest::get().uri("/healthz").to_request(); |
35 | 20 | let res = test::call_service(&mut app, req).await; |
36 | 21 | assert!(res.status().is_success()); |
37 | 22 | Ok(()) |
38 | 23 | } |
| 24 | + |
| 25 | +#[actix_rt::test] |
| 26 | +async fn create() -> Result<(), Error> { |
| 27 | + reset()?; |
| 28 | + let app = App::new().service(test_app().await); |
| 29 | + let mut app = test::init_service(app).await; |
| 30 | + let scope = Soa::from(&basic_user(1, true)).creator(); |
| 31 | + let res = get(&mut app, "/groups/api/v1/groups", &scope).await; |
| 32 | + assert!(res.status().is_success()); |
| 33 | + assert_eq!(read_json(res).await, json!({ "groups": [], "next": null })); |
| 34 | + |
| 35 | + let scope = Soa::new("nobody", Trust::Public, GroupsTrust::None); |
| 36 | + let res = get(&mut app, "/groups/api/v1/groups", &scope).await; |
| 37 | + assert_eq!(res.status().as_u16(), 403); |
| 38 | + |
| 39 | + let scope = Soa::from(&basic_user(1, true)).creator(); |
| 40 | + let res = post( |
| 41 | + &mut app, |
| 42 | + "/groups/api/v1/groups", |
| 43 | + json!({ "name": "nda", "description": "the nda group" }), |
| 44 | + &scope, |
| 45 | + ) |
| 46 | + .await; |
| 47 | + assert!(res.status().is_success()); |
| 48 | + |
| 49 | + let res = get(&mut app, "/groups/api/v1/groups", &scope).await; |
| 50 | + assert!(res.status().is_success()); |
| 51 | + assert_eq!(read_json(res).await["groups"][0]["name"], "nda"); |
| 52 | + |
| 53 | + Ok(()) |
| 54 | +} |
0 commit comments