uuid_services.user_services.test in Universally Unique IDentifier 7
Test the UUID User Services integration.
File
uuid_services/uuid_services.user_services.testView source
<?php
/**
* @file
* Test the UUID User Services integration.
*/
/**
* Test the UUID User Services integration.
*/
class UuidUserServicesTest extends ServicesWebTestCase {
/**
* The endpoint configuration.
*
* @var object
*/
protected $endpoint = NULL;
/**
* {@inheritdoc}
*/
public static function getInfo() {
return array(
'name' => 'UUID User Services tests',
'description' => 'Test the user services resource UUID methods and actions.',
'group' => 'UUID',
);
}
/**
* {@inheritdoc}
*/
public function setUp(array $modules = array()) {
parent::setUp(array(
'ctools',
'services',
'rest_server',
'uuid_services',
));
$this->endpoint = $this
->saveNewEndpoint();
}
/**
* {@inheritdoc}
*/
public function saveNewEndpoint() {
$edit = $this
->populateEndpointFAPI();
$endpoint = new stdClass();
$endpoint->disabled = FALSE;
$endpoint->api_version = 3;
$endpoint->name = $edit['name'];
$endpoint->server = $edit['server'];
$endpoint->path = $edit['path'];
$endpoint->authentication = array(
'services' => 'services',
);
$endpoint->server_settings = array(
'formatters' => array(
'json' => TRUE,
'bencode' => TRUE,
'rss' => TRUE,
'plist' => TRUE,
'xmlplist' => TRUE,
'php' => TRUE,
'yaml' => TRUE,
'jsonp' => FALSE,
'xml' => FALSE,
),
'parsers' => array(
'application/x-yaml' => TRUE,
'application/json' => TRUE,
'application/vnd.php.serialized' => TRUE,
'application/plist' => TRUE,
'application/plist+xml' => TRUE,
'application/x-www-form-urlencoded' => TRUE,
'multipart/form-data' => TRUE,
),
);
$endpoint->resources = array(
'user' => array(
'operations' => array(
'create' => array(
'enabled' => 1,
),
'retrieve' => array(
'enabled' => 1,
),
'update' => array(
'enabled' => 1,
),
'delete' => array(
'enabled' => 1,
),
'index' => array(
'enabled' => 1,
),
),
),
);
$endpoint->debug = 1;
$endpoint->export_type = FALSE;
services_endpoint_save($endpoint);
$endpoint = services_endpoint_load($endpoint->name);
$this
->assertTrue($endpoint->name == $edit['name'], 'Endpoint successfully created');
return $endpoint;
}
/**
* Tests user Retrieve.
*/
public function testUserRetrieve() {
$admin_user = $this
->drupalCreateUser(array(
'administer services',
'administer users',
));
$this
->drupalLogin($admin_user);
$other_user = $this
->drupalCreateUser();
// Verify user is found.
$response = $this
->servicesGet($this->endpoint->path . '/user/' . $other_user->uuid);
$this
->assertTrue($other_user->uuid == $response['body']->uuid, 'Successfully received User info');
}
/**
* Tests users Update their own account.
*/
public function testUserUpdate() {
$admin_user = $this
->drupalCreateUser(array(
'administer services',
'administer users',
'administer permissions',
));
$this
->drupalLogin($admin_user);
$other_user = $this
->drupalCreateUser();
$update = array(
'uuid' => $other_user->uuid,
'roles' => array(
'2' => 'authenticated user',
'3' => 'administrator',
),
'status' => 1,
'pass' => $other_user->pass,
);
$this
->servicesPut($this->endpoint->path . '/user/' . $other_user->uuid, $update);
$user_after_update = user_load($other_user->uid, TRUE);
$this
->assertTrue(in_array('administrator', $user_after_update->roles), 'Administrator role successfully added');
}
/**
* Tests user Update another account fail with no permissions.
*/
public function testUserUpdatePermFail() {
$user = $this
->drupalCreateUser();
$this
->drupalLogin($user);
$other_user = $this
->drupalCreateUser();
$update = array(
'uuid' => $other_user->uuid,
'name' => 'test_edit',
'roles' => array(
'2' => 'authenticated user',
'3' => 'administrator',
),
'status' => 1,
'pass' => $other_user->pass,
);
$response = $this
->servicesPut($this->endpoint->path . '/user/' . $other_user->uuid, $update);
$user_after_update = user_load($other_user->uid, TRUE);
$this
->assertNotEqual($update['name'], $user_after_update->name, 'User name was not updated without the needed permissions');
$this
->assertFalse(in_array('administrator', $user_after_update->roles), 'Administrator role was not added without the needed permissions');
$this
->assertTrue($response['code'] == 403, 'Updating the user failed without the needed permissions');
}
/**
* Tests users Update their own account fail with no permissions.
*/
public function testUserOwnUpdatePermFail() {
$user = $this
->drupalCreateUser([
'access user profiles',
]);
$this
->drupalLogin($user);
$user = user_load($user->uid, TRUE);
$update = array(
'uuid' => $user->uuid,
'roles' => array(
'2' => 'authenticated user',
'3' => 'administrator',
),
'status' => 1,
'pass' => $user->pass,
);
$this
->servicesPut($this->endpoint->path . '/user/' . $user->uuid, $update);
$user_after_update = user_load($user->uid, TRUE);
$this
->assertFalse(in_array('administrator', $user_after_update->roles), 'Administrator role was not added without the needed permissions');
$this
->assertEqual($user->roles, $user_after_update->roles, 'Existing roles persist after update.');
}
/**
* Tests user Delete.
*/
public function testUserDelete() {
$admin_user = $this
->drupalCreateUser(array(
'administer services',
'administer users',
));
$this
->drupalLogin($admin_user);
$other_user = $this
->drupalCreateUser();
$this
->servicesDelete($this->endpoint->path . '/user/' . $other_user->uuid);
$user_after_update = user_load($other_user->uid, TRUE);
$this
->assertTrue(empty($user_after_update), 'User was deleted');
}
/**
* Tests user Delete fail with no permissions.
*/
public function testUserDeletePermFail() {
$user = $this
->drupalCreateUser();
$this
->drupalLogin($user);
$other_user = $this
->drupalCreateUser();
$response = $this
->servicesDelete($this->endpoint->path . '/user/' . $other_user->uuid);
$user_after_update = user_load($other_user->uid, TRUE);
$this
->assertTrue(!empty($user_after_update), 'User was not deleted without the needed permissions');
$this
->assertTrue($response['code'] == 403, 'Deleting the user failed without the needed permissions');
}
}
Classes
Name | Description |
---|---|
UuidUserServicesTest | Test the UUID User Services integration. |