diff options
Diffstat (limited to 'tests/admin.rs')
-rw-r--r-- | tests/admin.rs | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/tests/admin.rs b/tests/admin.rs new file mode 100644 index 0000000..06aed66 --- /dev/null +++ b/tests/admin.rs @@ -0,0 +1,194 @@ +use forgejo_api::structs::*; + +mod common; + +#[tokio::test] +async fn user() { + let api = common::login(); + + let user_opt = CreateUserOption { + created_at: None, + email: "pipis@noreply.example.org".into(), + full_name: None, + login_name: None, + must_change_password: None, + password: Some("userpass".into()), + restricted: Some(false), + send_notify: Some(true), + source_id: None, + username: "Pipis".into(), + visibility: Some("public".into()), + }; + let _ = api + .admin_create_user(user_opt) + .await + .expect("failed to create user"); + + let query = AdminSearchUsersQuery::default(); + let users = api + .admin_search_users(query) + .await + .expect("failed to search users"); + assert!( + users + .iter() + .find(|u| u.login.as_ref().unwrap() == "Pipis") + .is_some(), + "could not find new user" + ); + let query = AdminGetAllEmailsQuery::default(); + let users = api + .admin_get_all_emails(query) + .await + .expect("failed to search emails"); + assert!( + users + .iter() + .find(|u| u.email.as_ref().unwrap() == "pipis@noreply.example.org") + .is_some(), + "could not find new user" + ); +} + +#[tokio::test] +async fn org() { + let api = common::login(); + + let user_opt = CreateUserOption { + created_at: None, + email: "org-owner@noreply.example.org".into(), + full_name: None, + login_name: None, + must_change_password: None, + password: Some("userpass".into()), + restricted: Some(false), + send_notify: Some(true), + source_id: None, + username: "OrgOwner".into(), + visibility: Some("public".into()), + }; + let _ = api + .admin_create_user(user_opt) + .await + .expect("failed to create user"); + + let org_opt = CreateOrgOption { + description: None, + email: None, + full_name: None, + location: None, + repo_admin_change_team_access: None, + username: "test-org".into(), + visibility: Some(CreateOrgOptionVisibility::Public), + website: None, + }; + let _ = api + .admin_create_org("OrgOwner", org_opt) + .await + .expect("failed to create org"); + let query = AdminGetAllOrgsQuery::default(); + assert!( + !api.admin_get_all_orgs(query).await.unwrap().is_empty(), + "org list empty" + ); + let rename_opt = RenameUserOption { + new_username: "Bepis".into(), + }; + api.admin_rename_user("Pipis", rename_opt) + .await + .expect("failed to rename user"); + let query = AdminDeleteUserQuery { purge: Some(true) }; + api.admin_delete_user("Bepis", query) + .await + .expect("failed to delete user"); + let query = AdminDeleteUserQuery { purge: Some(true) }; + assert!( + api.admin_delete_user("Ghost", query).await.is_err(), + "deleting fake user should fail" + ); +} + +#[tokio::test] +async fn key() { + let api = common::login(); + + let user_opt = CreateUserOption { + created_at: None, + email: "key-holder@noreply.example.org".into(), + full_name: None, + login_name: None, + must_change_password: None, + password: Some("userpass".into()), + restricted: Some(false), + send_notify: Some(true), + source_id: None, + username: "KeyHolder".into(), + visibility: Some("public".into()), + }; + let _ = api + .admin_create_user(user_opt) + .await + .expect("failed to create user"); + + let key_opt = CreateKeyOption { + key: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN68ehQAsbGEwlXPa2AxbAh1QxFQrtRel2jeC0hRlPc1 user@noreply.example.org".into(), + read_only: None, + title: "Example Key".into(), + }; + let key = api + .admin_create_public_key("KeyHolder", key_opt) + .await + .expect("failed to create key"); + api.admin_delete_user_public_key("KeyHolder", key.id.unwrap()) + .await + .expect("failed to delete key"); +} + +#[tokio::test] +async fn cron() { + let api = common::login(); + + let query = AdminCronListQuery::default(); + let crons = api + .admin_cron_list(query) + .await + .expect("failed to get crons list"); + api.admin_cron_run(&crons.get(0).expect("no crons").name.as_ref().unwrap()) + .await + .expect("failed to run cron"); +} + +#[tokio::test] +async fn hook() { + let api = common::login(); + let hook_opt = CreateHookOption { + active: None, + authorization_header: None, + branch_filter: None, + config: CreateHookOptionConfig { + content_type: "json".into(), + url: url::Url::parse("http://test.local/").unwrap(), + additional: Default::default(), + }, + events: Some(Vec::new()), + r#type: CreateHookOptionType::Gitea, + }; + // yarr har har me matey this is me hook + let hook = api + .admin_create_hook(hook_opt) + .await + .expect("failed to create hook"); + let edit_hook = EditHookOption { + active: Some(true), + authorization_header: None, + branch_filter: None, + config: None, + events: None, + }; + api.admin_edit_hook(hook.id.unwrap(), edit_hook) + .await + .expect("failed to edit hook"); + api.admin_delete_hook(hook.id.unwrap()) + .await + .expect("failed to delete hook"); +} |