Skip to content

Commit

Permalink
Issue [#1134872] tedbow, kylebrowning, glennpratt Create register act…
Browse files Browse the repository at this point in the history
…ion for user resource
  • Loading branch information
Kyle Browning authored and Kyle Browning committed Apr 28, 2011
1 parent 81009b2 commit fb6efd1
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 2 deletions.
27 changes: 26 additions & 1 deletion resources/user_resource.inc
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ function _user_resource_definition() {
),
),
),

'update' => array(
'help' => 'Updates a user',
'callback' => '_user_resource_update',
Expand Down Expand Up @@ -143,6 +142,24 @@ function _user_resource_definition() {
'callback' => '_user_resource_logout',
'access callback' => 'services_access_menu',
),

'register' => array(
'help' => 'Registers a user. (anonymous only)',
'callback' => '_user_resource_create',
'file' => array('type' => 'inc', 'module' => 'services', 'name' => 'resources/user_resource'),
'access callback' => '_user_resource_access',
'access arguments' => array('register'),
'access arguments append' => TRUE,
'args' => array(
array(
'name' => 'account',
'type' => 'array',
'description' => 'The user data',
'source' => 'data',
'optional' => FALSE,
),
),
),
),
),
);
Expand Down Expand Up @@ -441,6 +458,14 @@ function _user_resource_access($op = 'view', $args = array()) {
return ($user->uid == $account->uid || user_access('administer users'));
case 'create':
return user_access('administer users');
case 'register':
//Verify user is not logged in, and verify that visitors can create accounts.
if (!$user->uid && variable_get('user_register', 1) != 0) {
return TRUE;
}
else {
return FALSE;
}
case 'delete':
$account = user_load($args[0]);
if (!$account->uid) {
Expand Down
2 changes: 1 addition & 1 deletion servers/rest_server/includes/RESTServer.inc
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ class RESTServer {
elseif (!isset($info['optional']) || !$info['optional']) {
return services_error(t('Missing required argument !arg', array(
'!arg' => $info['name'],
)), 401);
)), 406);
}
else {
$arguments[$i] = NULL;
Expand Down
33 changes: 33 additions & 0 deletions tests/functional/ServicesResourceUserTests.test
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,39 @@ class ServicesResourceUsertests extends ServicesWebtestCase {
$this->assertTrue(strpos($response['status'], 'E-mail address field is required') !== FALSE, t('It is not possible to create user without email.'), 'UserResource: Create');
}

/**
* Test register method.
*
* Register user, load user.
*/
function testRegisterUser() {
// Create user.
$user = array();
$user['name'] = $this->randomName();
$user['mail'] = $user['name'] . '@example.com';
$user['pass'] = user_password();
$user['status'] = 1;

$response = $this->servicesPost($this->endpoint->path . '/user/register', array('account' => $user));

//Verify logged in users cannnot create accounts
$code = $response['code'];
$this->assertEqual($code, '401', t('Verify permission denied 401'), 'UserResource: Create');

//Verify logged out state can create users
$this->drupalLogout();

$response = $this->servicesPost($this->endpoint->path . '/user/register', array('account' => $user));
$account = $response['body'];

$this->assertTrue(!empty($account['uid']), t('User has been create successfully.'), 'UserResource: Create');

// Load user.
$user_load = user_load($account['uid']);
$this->assertTrue(!empty($user_load), t('Newly created user has been loaded successfully.'), 'UserResource: Create');
$this->drupalLogin($this->privileged_user);
}

/**
* Test retrieve method.
*/
Expand Down
3 changes: 3 additions & 0 deletions tests/functional/ServicesWebTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,9 @@ public function saveNewEndpoint() {
'logout' => array(
'enabled' => 1,
),
'register' => array(
'enabled' => 1,
),
),
),
'comment' => array(
Expand Down

0 comments on commit fb6efd1

Please sign in to comment.