Files
old-v2-backend/wordpress/wp-content/plugins/wp-graphql/tests/wpunit/RouterTest.php
2018-06-25 00:00:37 +02:00

285 lines
7.8 KiB
PHP
Executable File

<?php
class RouterTest extends \Codeception\TestCase\WPTestCase {
public function setUp() {
// before
parent::setUp();
// your set up methods here
}
public function tearDown() {
// your tear down methods here
// then
parent::tearDown();
}
public function testRouteEndpoint() {
/**
* Test that the default route is set to "graphql"
*/
$this->assertEquals( 'graphql', apply_filters( 'graphql_endpoint', \WPGraphQL\Router::$route ) );
}
/**
* Test to make sure that the rewrite rules properly include the graphql route
*/
public function testGraphQLRewriteRule() {
global $wp_rewrite;
$route = apply_filters( 'graphql_endpoint', \WPGraphQL\Router::$route );
$this->assertArrayHasKey( $route . '/?$', $wp_rewrite->extra_rules_top );
}
public function testAddQueryVar() {
$query_vars = [];
$actual = \WPGraphQL\Router::add_query_var( $query_vars );
$this->assertEquals( $actual, [ apply_filters( 'graphql_endpoint', \WPGraphQL\Router::$route ) ] );
}
public function testGetRawData() {
$router = new \WPGraphQL\Router();
global $HTTP_RAW_POST_DATA;
$actual = $router->get_raw_data();
$this->assertEquals( $actual, $HTTP_RAW_POST_DATA );
}
public function testGetRawDataEmptyGlobal() {
$router = new \WPGraphQL\Router();
global $HTTP_RAW_POST_DATA;
$HTTP_RAW_POST_DATA = null;
$actual = $router->get_raw_data();
$this->assertEquals( $actual, $HTTP_RAW_POST_DATA );
}
/**
* Test the "send_header" method in the Router class
*
* @see: https://github.com/sebastianbergmann/phpunit/issues/720
* @runInSeparateProcess
*/
// public function testSendHeader() {
// $router = new \WPGraphQL\Router();
// $router::send_header( 'some_key', 'some_value' );
// if ( function_exists( 'xdebug_get_headers' ) ) {
// $this->assertContains( 'some_key: some_value', xdebug_get_headers() );
// }
// }
//
// public function testAddRewriteRule() {
//
// global $wp_rewrite;
// \WPGraphQL\Router::add_rewrite_rule();
// flush_rewrite_rules();
//
// $this->assertContains( 'index.php?' . \WPGraphQL\Router::$route . '=true', $wp_rewrite->extra_rules_top );
//
// }
/**
* @runInSeparateProcess
*/
// public function testSetHeadersNoCache() {
//
// $router = new \WPGraphQL\Router();
// $router::set_headers( '200' );
//
// $headers = xdebug_get_headers();
//
// $this->assertContains( 'Access-Control-Allow-Origin: *', $headers );
// $this->assertContains( 'Content-Type: application/json ; charset=' . get_option( 'blog_charset' ), $headers );
// $this->assertContains( 'X-Robots-Tag: noindex', $headers );
// $this->assertContains( 'X-Content-Type-Options: nosniff', $headers );
// $this->assertContains( 'Access-Control-Allow-Headers: Authorization, Content-Type', $headers );
// $this->assertContains( 'X-hacker: If you\'re reading this, you should visit github.com/wp-graphql and contribute!', $headers );
//
// }
/**
* @runInSeparateProcess
*/
// public function testSetHeadersWithCache() {
//
// add_filter( 'graphql_send_nocache_headers', function() {
// return true;
// } );
//
// $router = new \WPGraphQL\Router();
// $router::set_headers( '200' );
// $headers = xdebug_get_headers();
// $this->assertContains( 'Cache-Control: no-cache, must-revalidate, max-age=0', $headers );
//
// }
/**
* This tests the WPGraphQL Router resolving HTTP requests.
*/
// public function testResolveRequest() {
//
// /**
// * Create a test a query
// */
// $this->factory->post->create( [
// 'post_title' => 'test',
// 'post_status' => 'publish',
// ] );
//
// /**
// * Filter the request data
// */
// add_filter( 'graphql_request_data', function( $data ) {
// $data['query'] = 'query getPosts($first:Int){ posts(first:$first){ edges{ node{ id } } } }';
// $data['variables'] = [ 'first' => 1 ];
// $data['operationName'] = 'getPosts';
//
// return $data;
// } );
//
// /**
// * Set the query var to "graphql" so we can mock like we're visiting the endpoint via
// */
// set_query_var( 'graphql', true );
// $GLOBALS['wp']->query_vars['graphql'] = true;
//
// /**
// * Instantiate the router
// */
// $router = new \WPGraphQL\Router();
//
// /**
// * Process the request using our filtered data
// */
// $router::resolve_http_request();
//
// /**
// * Make sure the constant gets defined when it's a GraphQL Request
// */
// $this->assertTrue( defined( 'GRAPHQL_HTTP_REQUEST' ) );
// $this->assertEquals( true, GRAPHQL_HTTP_REQUEST );
//
// /**
// * Make sure the actions we expect to be firing are firing
// */
// $this->assertNotFalse( did_action( 'graphql_process_http_request' ) );
// $this->assertNotFalse( did_action( 'graphql_process_http_request_response' ) );
//
// }
//
// public function testResolveHttpRequestWithJsonVariables() {
//
// /**
// * Create a test a query
// */
// $this->factory->post->create( [
// 'post_title' => 'test',
// 'post_status' => 'publish',
// ] );
//
// /**
// * Filter the request data
// */
// add_filter( 'graphql_request_data', function( $data ) {
// $data['query'] = 'query getPosts($first:Int){ posts(first:$first){ edges{ node{ id } } } }';
// $data['variables'] = wp_json_encode( [ 'first' => 1 ] );
// $data['operationName'] = 'getPosts';
//
// return $data;
// } );
//
// /**
// * Set the query var to "graphql" so we can mock like we're visiting the endpoint via
// */
// set_query_var( 'graphql', true );
// $GLOBALS['wp']->query_vars['graphql'] = true;
//
// /**
// * Instantiate the router
// */
// $router = new \WPGraphQL\Router();
//
// /**
// * Process the request using our filtered data
// */
// $router::resolve_http_request();
//
// /**
// * Make sure the constant gets defined when it's a GraphQL Request
// */
// $this->assertTrue( defined( 'GRAPHQL_HTTP_REQUEST' ) );
// $this->assertEquals( true, GRAPHQL_HTTP_REQUEST );
//
// /**
// * Make sure the actions we expect to be firing are firing
// */
// $this->assertNotFalse( did_action( 'graphql_process_http_request' ) );
// $this->assertNotFalse( did_action( 'graphql_process_http_request_response' ) );
//
// }
//
// /**
// * This tests the resolve_http_request method for a route that's not the
// * /graphql endpoint to make sure that graphql isn't improperly initiated
// * when it's not supposed to be.
// */
// public function testResolveHttpRequestWrongQueryVars() {
//
// set_query_var( 'graphql', false );
// $GLOBALS['wp']->query_vars['graphql'] = false;
//
// /**
// * Instantiate the router
// */
// $router = new \WPGraphQL\Router();
//
// /**
// * Process the request using our filtered data
// */
// $this->assertNull( $router::resolve_http_request() );
//
// }
//
// public function testResolveHttpRequestWithEmptyQuery() {
//
// /**
// * Filter the request data
// */
// add_filter( 'graphql_request_data', function( $data ) {
// $data['query'] = null;
// $data['variables'] = null;
// $data['operationName'] = null;
//
// return $data;
// } );
//
// /**
// * Set the query var to "graphql" so we can mock like we're visiting the endpoint via
// */
// set_query_var( 'graphql', true );
// $GLOBALS['wp']->query_vars['graphql'] = true;
//
// /**
// * Instantiate the router
// */
// $router = new \WPGraphQL\Router();
//
// /**
// * Process the request using our filtered data
// */
// $router::resolve_http_request();
//
// /**
// * Make sure the constant gets defined when it's a GraphQL Request
// */
// $this->assertTrue( defined( 'GRAPHQL_HTTP_REQUEST' ) );
// $this->assertEquals( true, GRAPHQL_HTTP_REQUEST );
//
// /**
// * Make sure the actions we expect to be firing are firing
// */
// $this->assertNotFalse( did_action( 'graphql_process_http_request' ) );
// $this->assertNotFalse( did_action( 'graphql_process_http_request_response' ) );
//
// }
}