Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ delete-wp-plugins-backup:
lint: lint-rust lint-swift

lint-rust:
$(rust_docker_run) /bin/bash -c "rustup component add clippy && cargo clippy --all -- -D warnings"
$(rust_docker_run) /bin/bash -c "rustup component add clippy && cargo clippy --all -- -D warnings && cargo clippy --tests --all -- -D warnings"

lint-swift:
docker run -v $(PWD):$(docker_container_repo_dir) -w $(docker_container_repo_dir) -it $(swiftlint_container) swiftlint
Expand Down
6 changes: 3 additions & 3 deletions wp_api/src/request/endpoint/users_endpoint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ mod tests {
has_published_posts: Some(true),
};
validate_endpoint(
users_endpoint.filter_list(WPContext::Edit, Some(&params), &vec![SparseUserField::Name, SparseUserField::Email]),
users_endpoint.filter_list(WPContext::Edit, Some(&params), &[SparseUserField::Name, SparseUserField::Email]),
"/users?context=edit&page=2&per_page=60&search=foo&slug=bar%2Cbaz&has_published_posts=true&_fields=name%2Cemail",
);
}
Expand All @@ -195,7 +195,7 @@ mod tests {
users_endpoint.filter_retrieve(
UserId(98),
WPContext::View,
&vec![SparseUserField::Nickname, SparseUserField::Url],
&[SparseUserField::Nickname, SparseUserField::Url],
),
"/users/98?context=view&_fields=nickname%2Curl",
);
Expand All @@ -214,7 +214,7 @@ mod tests {
validate_endpoint(
users_endpoint.filter_retrieve_me(
WPContext::Embed,
&vec![SparseUserField::Roles, SparseUserField::Capabilities],
&[SparseUserField::Roles, SparseUserField::Capabilities],
),
"/users/me?context=embed&_fields=roles%2Ccapabilities",
);
Expand Down
2 changes: 1 addition & 1 deletion wp_api/tests/test_plugins_immut.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ async fn filter_plugins(
parsed_response
.unwrap()
.iter()
.for_each(|plugin| validate_sparse_plugin_fields(&plugin, fields));
.for_each(|plugin| validate_sparse_plugin_fields(plugin, fields));
}

#[apply(filter_fields_cases)]
Expand Down
72 changes: 48 additions & 24 deletions wp_api/tests/test_users_err.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,10 @@ async fn list_users_err_forbidden_context() {

#[tokio::test]
async fn list_users_err_forbidden_orderby_email() {
let mut params = UserListParams::default();
params.orderby = Some(WPApiParamUsersOrderBy::Email);
let params = UserListParams {
orderby: Some(WPApiParamUsersOrderBy::Email),
..Default::default()
};
api_as_subscriber()
.list_users_request(WPContext::View, &Some(params))
.execute()
Expand All @@ -96,8 +98,10 @@ async fn list_users_err_forbidden_orderby_email() {

#[tokio::test]
async fn list_users_err_forbidden_who() {
let mut params = UserListParams::default();
params.who = Some(WPApiParamUsersWho::Authors);
let params = UserListParams {
who: Some(WPApiParamUsersWho::Authors),
..Default::default()
};
api_as_subscriber()
.list_users_request(WPContext::View, &Some(params))
.execute()
Expand All @@ -109,8 +113,10 @@ async fn list_users_err_forbidden_who() {

#[tokio::test]
async fn list_users_with_capabilities_err_user_cannot_view() {
let mut params = UserListParams::default();
params.capabilities = vec!["foo".to_string()];
let params = UserListParams {
capabilities: vec!["foo".to_string()],
..Default::default()
};
api_as_subscriber()
.list_users_request(WPContext::Edit, &Some(params))
.execute()
Expand All @@ -122,8 +128,10 @@ async fn list_users_with_capabilities_err_user_cannot_view() {

#[tokio::test]
async fn list_users_with_roles_err_user_cannot_view() {
let mut params = UserListParams::default();
params.roles = vec!["foo".to_string()];
let params = UserListParams {
roles: vec!["foo".to_string()],
..Default::default()
};
api_as_subscriber()
.list_users_request(WPContext::Edit, &Some(params))
.execute()
Expand All @@ -135,8 +143,10 @@ async fn list_users_with_roles_err_user_cannot_view() {

#[tokio::test]
async fn list_users_orderby_registered_date_err_forbidden_orderby() {
let mut params = UserListParams::default();
params.orderby = Some(WPApiParamUsersOrderBy::RegisteredDate);
let params = UserListParams {
orderby: Some(WPApiParamUsersOrderBy::RegisteredDate),
..Default::default()
};
api_as_subscriber()
.list_users_request(WPContext::View, &Some(params))
.execute()
Expand Down Expand Up @@ -173,8 +183,10 @@ async fn retrieve_user_err_unauthorized() {

#[tokio::test]
async fn update_user_err_cannot_edit() {
let mut params = UserUpdateParams::default();
params.slug = Some("new_slug".to_string());
let params = UserUpdateParams {
slug: Some("new_slug".to_string()),
..Default::default()
};
// Subscribers can't update someone else's slug
api_as_subscriber()
.update_user_request(FIRST_USER_ID, &params)
Expand Down Expand Up @@ -206,8 +218,10 @@ async fn update_user_err_user_invalid_argument() {

#[tokio::test]
async fn update_user_err_cannot_edit_roles() {
let mut params = UserUpdateParams::default();
params.roles = vec!["new_role".to_string()];
let params = UserUpdateParams {
roles: vec!["new_role".to_string()],
..Default::default()
};
// Subscribers can't update their roles
api_as_subscriber()
.update_user_request(SECOND_USER_ID, &params)
Expand All @@ -220,8 +234,10 @@ async fn update_user_err_cannot_edit_roles() {

#[tokio::test]
async fn update_user_err_user_invalid_email() {
let mut params = UserUpdateParams::default();
params.email = Some(SECOND_USER_EMAIL.to_string());
let params = UserUpdateParams {
email: Some(SECOND_USER_EMAIL.to_string()),
..Default::default()
};
// Can't update user's email to an email that's already in use
api()
.update_user_request(FIRST_USER_ID, &params)
Expand All @@ -234,8 +250,10 @@ async fn update_user_err_user_invalid_email() {

#[tokio::test]
async fn update_user_email_err_invalid_param() {
let mut params = UserUpdateParams::default();
params.email = Some("not_valid".to_string());
let params = UserUpdateParams {
email: Some("not_valid".to_string()),
..Default::default()
};
api()
.update_user_request(FIRST_USER_ID, &params)
.execute()
Expand All @@ -247,8 +265,10 @@ async fn update_user_email_err_invalid_param() {

#[tokio::test]
async fn update_user_password_err_invalid_param() {
let mut params = UserUpdateParams::default();
params.password = Some("".to_string());
let params = UserUpdateParams {
password: Some("".to_string()),
..Default::default()
};
api()
.update_user_request(FIRST_USER_ID, &params)
.execute()
Expand All @@ -260,8 +280,10 @@ async fn update_user_password_err_invalid_param() {

#[tokio::test]
async fn update_user_err_user_invalid_role() {
let mut params = UserUpdateParams::default();
params.roles = vec!["doesnt_exist".to_string()];
let params = UserUpdateParams {
roles: vec!["doesnt_exist".to_string()],
..Default::default()
};
// Can't update user's email to a role that doesn't exist
api()
.update_user_request(FIRST_USER_ID, &params)
Expand All @@ -274,8 +296,10 @@ async fn update_user_err_user_invalid_role() {

#[tokio::test]
async fn update_user_err_user_invalid_slug() {
let mut params = UserUpdateParams::default();
params.slug = Some(SECOND_USER_SLUG.to_string());
let params = UserUpdateParams {
slug: Some(SECOND_USER_SLUG.to_string()),
..Default::default()
};
// Can't update user's slug to a slug that's already in use
api()
.update_user_request(FIRST_USER_ID, &params)
Expand Down
2 changes: 1 addition & 1 deletion wp_api/tests/test_users_immut.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ async fn filter_users(#[case] fields: &[SparseUserField]) {
parsed_response
.unwrap()
.iter()
.for_each(|user| validate_sparse_user_fields(&user, fields));
.for_each(|user| validate_sparse_user_fields(user, fields));
}

#[apply(filter_fields_cases)]
Expand Down
66 changes: 43 additions & 23 deletions wp_api/tests/test_users_mut.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ async fn delete_current_user() {
.unwrap()
.parse(wp_api::users::parse_delete_user_response)
.unwrap();
assert_eq!(true, deleted_user.deleted);
assert!(deleted_user.deleted);
assert_eq!(FIRST_USER_ID, deleted_user.previous.id);

// Assert that the DB doesn't have a record of the user anymore
Expand All @@ -89,8 +89,10 @@ async fn delete_current_user() {
#[tokio::test]
async fn update_user_name() {
let new_name = "new_name";
let mut params = UserUpdateParams::default();
params.name = Some(new_name.to_string());
let params = UserUpdateParams {
name: Some(new_name.to_string()),
..Default::default()
};
test_update_user(params, |user, _| {
assert_eq!(user.name, new_name);
})
Expand All @@ -100,8 +102,10 @@ async fn update_user_name() {
#[tokio::test]
async fn update_user_first_name() {
let new_first_name = "new_first_name";
let mut params = UserUpdateParams::default();
params.first_name = Some(new_first_name.to_string());
let params = UserUpdateParams {
first_name: Some(new_first_name.to_string()),
..Default::default()
};
test_update_user(params, |_, meta_list| {
assert_eq!(find_meta(&meta_list, "first_name"), new_first_name);
})
Expand All @@ -111,8 +115,10 @@ async fn update_user_first_name() {
#[tokio::test]
async fn update_user_last_name() {
let new_last_name = "new_last_name";
let mut params = UserUpdateParams::default();
params.last_name = Some(new_last_name.to_string());
let params = UserUpdateParams {
last_name: Some(new_last_name.to_string()),
..Default::default()
};
test_update_user(params, |_, meta_list| {
assert_eq!(find_meta(&meta_list, "last_name"), new_last_name);
})
Expand All @@ -122,8 +128,10 @@ async fn update_user_last_name() {
#[tokio::test]
async fn update_user_email() {
let new_email = "new_email@example.com";
let mut params = UserUpdateParams::default();
params.email = Some(new_email.to_string());
let params = UserUpdateParams {
email: Some(new_email.to_string()),
..Default::default()
};
test_update_user(params, |user, _| {
assert_eq!(user.email, new_email);
})
Expand All @@ -133,8 +141,10 @@ async fn update_user_email() {
#[tokio::test]
async fn update_user_url() {
let new_url = "https://new_url";
let mut params = UserUpdateParams::default();
params.url = Some(new_url.to_string());
let params = UserUpdateParams {
url: Some(new_url.to_string()),
..Default::default()
};
test_update_user(params, |user, _| {
assert_eq!(user.url, new_url);
})
Expand All @@ -144,8 +154,10 @@ async fn update_user_url() {
#[tokio::test]
async fn update_user_description() {
let new_description = "new_description";
let mut params = UserUpdateParams::default();
params.description = Some(new_description.to_string());
let params = UserUpdateParams {
description: Some(new_description.to_string()),
..Default::default()
};
test_update_user(params, |_, meta_list| {
assert_eq!(find_meta(&meta_list, "description"), new_description);
})
Expand All @@ -155,8 +167,10 @@ async fn update_user_description() {
#[tokio::test]
async fn update_user_nickname() {
let new_nickname = "new_nickname";
let mut params = UserUpdateParams::default();
params.nickname = Some(new_nickname.to_string());
let params = UserUpdateParams {
nickname: Some(new_nickname.to_string()),
..Default::default()
};
test_update_user(params, |_, meta_list| {
assert_eq!(find_meta(&meta_list, "nickname"), new_nickname);
})
Expand All @@ -166,8 +180,10 @@ async fn update_user_nickname() {
#[tokio::test]
async fn update_user_slug() {
let new_slug = "new_slug";
let mut params = UserUpdateParams::default();
params.slug = Some(new_slug.to_string());
let params = UserUpdateParams {
slug: Some(new_slug.to_string()),
..Default::default()
};
test_update_user(params, |user, _| {
assert_eq!(user.slug, new_slug);
})
Expand All @@ -178,8 +194,10 @@ async fn update_user_slug() {
async fn update_user_roles() {
wp_db::run_and_restore(|_| async move {
let new_role = "new_role";
let mut params = UserUpdateParams::default();
params.roles = vec![new_role.to_string()];
let params = UserUpdateParams {
roles: vec![new_role.to_string()],
..Default::default()
};
let user_update_response = api()
.update_user_request(FIRST_USER_ID, &params)
.execute()
Expand All @@ -195,8 +213,10 @@ async fn update_user_roles() {
async fn update_user_password() {
wp_db::run_and_restore(|_| async move {
let new_password = "new_password";
let mut params = UserUpdateParams::default();
params.password = Some(new_password.to_string());
let params = UserUpdateParams {
password: Some(new_password.to_string()),
..Default::default()
};
let user_update_response = api()
.update_user_request(FIRST_USER_ID, &params)
.execute()
Expand All @@ -210,7 +230,7 @@ async fn update_user_password() {

async fn test_update_user<F>(params: UserUpdateParams, assert: F)
where
F: Fn(DbUser, Vec<DbUserMeta>) -> (),
F: Fn(DbUser, Vec<DbUserMeta>),
{
wp_db::run_and_restore(|mut db| async move {
let user_update_response = api()
Expand All @@ -226,7 +246,7 @@ where
.await;
}

fn find_meta(meta_list: &Vec<DbUserMeta>, meta_key: &str) -> String {
fn find_meta(meta_list: &[DbUserMeta], meta_key: &str) -> String {
meta_list
.iter()
.find_map(|m| {
Expand Down