summaryrefslogtreecommitdiffstats
path: root/tests/admin.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/admin.rs')
-rw-r--r--tests/admin.rs194
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");
+}