diff --git a/resources/user_resource.inc b/resources/user_resource.inc index e7eead4..a68735b 100644 --- a/resources/user_resource.inc +++ b/resources/user_resource.inc @@ -349,7 +349,10 @@ function _user_resource_update($uid, $account) { */ function _user_resource_delete($uid) { $account = user_load($uid); - if (empty($account)) { + if ($uid == 1) { + return services_error(t('The admin user cannot be deleted.'), 406); + } + elseif (empty($account)) { return services_error(t('There is no user with ID @uid.', array('@uid' => $uid)), 404); } user_delete($uid); diff --git a/tests/functional/ServicesResourceUserTests.test b/tests/functional/ServicesResourceUserTests.test index 6bae2f7..189e1d9 100644 --- a/tests/functional/ServicesResourceUserTests.test +++ b/tests/functional/ServicesResourceUserTests.test @@ -253,6 +253,23 @@ class ServicesResourceUsertests extends ServicesWebtestCase { } /** + * Test delete system user method. + */ + function testDeleteSystemUser() { + // Delete user 0. + $response = $this->servicesDelete($this->endpoint->path . '/user/0'); + + $this->assertTrue(strpos($response['code'], '404') !== FALSE, + 'Anonymous user was not deleted.', 'UserResource: Delete'); + + // Delete user 1. + $response = $this->servicesDelete($this->endpoint->path . '/user/1'); + + $this->assertTrue(strpos($response['status'], 'The admin user cannot be deleted.') !== FALSE, + 'Admin user was not deleted.', 'UserResource: Delete'); + } + + /** * Test index method. * * Create several users list them. List one user by name.