RestfulDiscoveryTestCase.test in RESTful 7
Same filename and directory in other branches
Contains RestfulDiscoveryTestCase
File
tests/RestfulDiscoveryTestCase.testView source
<?php
/**
* @file
* Contains RestfulDiscoveryTestCase
*/
class RestfulDiscoveryTestCase extends RestfulCurlBaseTestCase {
public static function getInfo() {
return array(
'name' => 'Discovery',
'description' => 'Test the discovery features.',
'group' => 'RESTful',
);
}
function setUp() {
parent::setUp('restful_test');
}
/**
* Test the headers populated in an OPTIONS request.
*/
function testOptionsMethod() {
$handler = restful_get_restful_handler('test_articles', 1, 4);
// 1. Assert Access-Control-Allow-Methods.
$handler
->options('');
$headers = $handler
->getHttpHeaders();
$this
->assertEqual($headers['Access-Control-Allow-Methods'], \RestfulInterface::HEAD, 'Access-Control-Allow-Methods header is populated correctly.');
// Make sure it returns the appropriate headers for every path.
$handler
->options('1');
$headers = $handler
->getHttpHeaders();
$this
->assertEqual($headers['Access-Control-Allow-Methods'], \RestfulInterface::PATCH . ',' . \RestfulInterface::DELETE, 'Access-Control-Allow-Methods header is populated correctly for different paths.');
// 2. Assert Accept.
$this
->assertEqual($headers['Accept'], 'application/xml; charset=utf-8', 'Accept header is populated correctly for configured formatter.');
$handler = restful_get_restful_handler('test_articles', 1, 2);
$handler
->options('');
$accepted_formats = array();
foreach ($handler
->formatterNames() as $formatter_name) {
$formatter = restful_get_formatter_handler($formatter_name, $handler);
$accepted_formats[] = $formatter
->getContentTypeHeader();
}
$headers = $handler
->getHttpHeaders();
$this
->assertEqual($headers['Accept'], implode(',', $accepted_formats), 'Accept header is populated correctly for non configured formatters.');
// 3. Assert Access-Control-Allow-Origin.
$response = $this
->httpRequest('api/v1.4/test_articles', \RestfulInterface::HEAD);
$headers = explode("\n", $response['headers']);
$this
->assertTrue(in_array('*', $headers), 'Access-Control-Allow-Origin header is populated correctly.');
}
/**
* Field discovery.
*/
public function testFieldDiscovery() {
$handler = restful_get_restful_handler('main', 1, 1);
$result = $handler
->options();
$expected = array(
'id' => array(
'data' => array(
'cardinality' => 1,
'read_only' => TRUE,
'type' => 'int',
'required' => FALSE,
),
'form_element' => array(
'allowed_values' => NULL,
'default_value' => '',
'placeholder' => '',
'size' => NULL,
'type' => NULL,
),
'info' => array(
'description' => t('Base ID for the entity.'),
'label' => t('ID'),
),
),
'label' => array(
'data' => array(
'cardinality' => 1,
'read_only' => FALSE,
'type' => 'string',
'required' => FALSE,
),
'form_element' => array(
'allowed_values' => NULL,
'type' => 'textfield',
'default_value' => '',
'placeholder' => '',
'size' => 255,
),
'info' => array(
'description' => t('The label of the resource.'),
'label' => t('Label'),
),
),
'text_multiple' => array(
'data' => array(
'cardinality' => FIELD_CARDINALITY_UNLIMITED,
'read_only' => FALSE,
'type' => 'string',
'required' => FALSE,
),
'form_element' => array(
'allowed_values' => NULL,
'default_value' => '',
'placeholder' => t('This is helpful.'),
'size' => 255,
'type' => 'textfield',
),
'info' => array(
'description' => t('This field holds different text inputs.'),
'label' => t('Text multiple'),
),
),
);
foreach ($expected as $public_field => $discovery_info) {
$result_data = $result[$public_field]['data'];
$expected_data = $expected[$public_field]['data'];
ksort($result_data);
ksort($expected_data);
$this
->assertEqual($result_data, $expected_data, format_string('The "data" information is properly described for @field.', array(
'@field' => $public_field,
)));
$result_form_element = $result[$public_field]['form_element'];
$expected_form_element = $expected[$public_field]['form_element'];
ksort($result_form_element);
ksort($expected_form_element);
$this
->assertEqual($result_form_element, $expected_form_element, format_string('The "form_element" information is properly described for @field.', array(
'@field' => $public_field,
)));
$result_info = $result[$public_field]['info'];
$expected_info = $expected[$public_field]['info'];
ksort($result_info);
ksort($expected_info);
$this
->assertEqual($result_info, $expected_info, format_string('The "info" information is properly described for @field.', array(
'@field' => $public_field,
)));
}
}
/**
* Field discovery allowed values.
*/
public function testFieldDiscoveryAllowedValues() {
$handler = restful_get_restful_handler('test_articles', 1, 2);
// Add entity reference fields.
restful_test_add_fields('node', 'article');
// Create 3 nodes.
$expected_result = array();
foreach (array(
1,
2,
3,
) as $id) {
$title = 'article' . '/' . $id;
$settings = array(
'title' => $title,
'type' => 'article',
);
$node = $this
->drupalCreateNode($settings);
$expected_result[$node->nid] = $title;
}
// Set widget to select list.
$instance = field_info_instance('node', 'entity_reference_single', 'article');
$instance['widget']['type'] = 'options_select';
field_update_instance($instance);
$result = $handler
->options();
$this
->assertEqual($result['entity_reference_single']['form_element']['allowed_values'], $expected_result);
// Set widget to autocomplete.
$instance['widget']['type'] = 'entityreference_autocomplete';
field_update_instance($instance);
// Invalidate public fields cache.
$handler
->setPublicFields(array());
$result = $handler
->options();
$this
->assertNull($result['entity_reference_single']['form_element']['allowed_values']);
}
}
Classes
Name | Description |
---|---|
RestfulDiscoveryTestCase | @file Contains RestfulDiscoveryTestCase |