Checks XML response does not equal to provided XML.
Comparison is done by canonicalizing both xml`s.
Parameter can be passed either as XmlBuilder, DOMDocument, DOMNode, XML string, or array (if no attributes).
dontSeeXmlResponseIncludes
part xml
param mixed $xml
return void
Checks XML response does not include provided XML.
Comparison is done by canonicalizing both xml`s.
Parameter can be passed either as XmlBuilder, DOMDocument, DOMNode, XML string, or array (if no attributes).
Even for a single value an array is returned.
Example:
<?php// match the first `user.id` in json$firstUserId=$I->grabDataFromResponseByJsonPath('$..users[0].id');$I->sendPut('/user',array('id'=>$firstUserId[0],'name'=>'davert'));
grabHttpHeader
part json
part xml
param string $name
param bool $first Whether to return the first value or all header values
return string|array The first header value if $first is true, an array of values otherwise
Returns the value of the specified header name
grabResponse
part json
part xml
return string
Returns current response so that it can be used in next scenario steps.
<?php$fileData='/9j/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/yQALCAABAAEBAREA/8wABgAQEAX/2gAIAQEAAD8A0s8g/9k=';// very small jpeg$I->seeBinaryResponseEquals(hash('sha256',base64_decode($fileData)),'sha256');
seeHttpHeader
part json
part xml
param string $name
param $value
return void
Checks over the given HTTP header and (optionally)
its value, asserting that are there
seeHttpHeaderOnce
part json
part xml
param string $name
return void
Checks that http response header is received only once.
HTTP RFC2616 allows multiple response headers with the same name.
You can check that you didn’t accidentally sent the same header twice.
<?php$I->seeHttpHeaderOnce('Cache-Control');
seeResponseCodeIs
part json
part xml
param int $code
return void
Checks response code equals to provided value.
<?php$I->seeResponseCodeIs(200);// preferred to use \Codeception\Util\HttpCode$I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK);
seeResponseCodeIsClientError
part json
part xml
return void
Checks that the response code is 4xx
seeResponseCodeIsRedirection
part json
part xml
return void
Checks that the response code 3xx
seeResponseCodeIsServerError
part json
part xml
return void
Checks that the response code is 5xx
seeResponseCodeIsSuccessful
part json
part xml
return void
Checks that the response code is 2xx
seeResponseContains
part json
part xml
param string $text
return void
Checks whether the last response contains text.
seeResponseContainsJson
part json
param array $json
return void
Checks whether the last JSON response contains provided array.
The response is converted to array with json_decode($response, true)
Thus, JSON is represented by associative array.
This method matches that response array contains provided array.
This method recursively checks if one array can be found inside of another.
seeResponseEquals
part json
part xml
param $expected
return void
Checks if response is exactly the same as provided.
seeResponseIsJson
part json
return void
Checks whether last response was valid JSON.
This is done with json_last_error function.
seeResponseIsValidOnJsonSchema
part json
see codecept_absolute_path()
param string $schemaFilename
return void
Checks whether last response matches the supplied json schema (https://json-schema.org/)
Supply schema as relative file path in your project directory or an absolute path
seeResponseIsValidOnJsonSchemaString
part json
param string $schema
return void
Checks whether last response matches the supplied json schema (https://json-schema.org/)
Supply schema as json string.
Checks if JSON structure in response matches JSONPath.
{"store":{"book":[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99}],"bicycle":{"color":"red","price":19.95}}}
<?php// at least one book in store has author$I->seeResponseJsonMatchesJsonPath('$.store.book[*].author');// first book in store has author$I->seeResponseJsonMatchesJsonPath('$.store.book[0].author');// at least one item in store has price$I->seeResponseJsonMatchesJsonPath('$.store..price');
seeResponseJsonMatchesXpath
part json
param string $xPath
return void
Checks if json structure in response matches the xpath provided.
JSON is not supposed to be checked against XPath, yet it can be converted to xml and used with XPath.
This assertion allows you to check the structure of response json.
*
{"store":{"book":[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99}],"bicycle":{"color":"red","price":19.95}}}
<?php// at least one book in store has author$I->seeResponseJsonMatchesXpath('//store/book/author');// first book in store has author$I->seeResponseJsonMatchesXpath('//store/book[1]/author');// at least one item in store has price$I->seeResponseJsonMatchesXpath('/store//price');
seeResponseJsonXpathEvaluatesTo
part json
param string $xPath
param $expected
return void
Checks if applying xpath to json structure in response matches the expected result.
JSON is not supposed to be checked against XPath, yet it can be converted to xml and used with XPath.
This assertion allows you to check the structure of response json.
*
{"store":{"book":[{"category":"reference","author":"Nigel Rees","title":"Sayings of the Century","price":8.95},{"category":"fiction","author":"Evelyn Waugh","title":"Sword of Honour","price":12.99}],"bicycle":{"color":"red","price":19.95}}}
<?php// at least one book in store has author$I->seeResponseJsonXpathEvaluatesTo('count(//store/book/author) > 0',true);// count the number of books written by given author is 5$I->seeResponseJsonMatchesXpath("//author[text() = 'Nigel Rees']",1.0);
seeResponseMatchesJsonType
part json
see JsonType
param array $jsonType
param ?string $jsonPath
return void
Checks that JSON matches provided types.
In case you don’t know the actual values of JSON data returned you can match them by type.
It starts the check with a root element. If JSON data is an array it will check all elements of it.
You can specify the path in the json which should be checked with JsonPath
Basic example:
<?php// {'user_id': 1, 'name': 'davert', 'is_active': false}$I->seeResponseMatchesJsonType(['user_id'=>'integer','name'=>'string|null','is_active'=>'boolean']);// narrow down matching with JsonPath:// {"users": [{ "name": "davert"}, {"id": 1}]}$I->seeResponseMatchesJsonType(['name'=>'string'],'$.users[0]');
You can check if the record contains fields with the data types you expect.
The list of possible data types:
string
integer
float
array (json object is array as well)
boolean
null
You can also use nested data type structures, and define multiple types for the same field:
You can also apply filters to check values. Filter can be applied with a : char after the type declaration,
or after another filter if you need more than one.
Here is the list of possible filters:
array:empty - check that value is an empty array
integer:>{val} - checks that integer is greater than {val} (works with float and string types too).
integer:<{val} - checks that integer is lower than {val} (works with float and string types too).
string:url - checks that value is valid url.
string:date - checks that value is date in JavaScript format: https://weblog.west-wind.com/posts/2014/Jan/06/JavaScript-JSON-Date-Parsing-and-real-Dates
string:email - checks that value is a valid email according to https://emailregex.com/
string:regex({val}) - checks that string matches a regex provided with {val}
This is how filters can be used:
<?php// {'user_id': 1, 'email' => '[email protected]'}$I->seeResponseMatchesJsonType(['user_id'=>'string:>0:<1000',// multiple filters can be used'email'=>'string:regex(~\@~)'// we just check that @ char is included]);// {'user_id': '1'}$I->seeResponseMatchesJsonType(['user_id'=>'string:>0',// works with strings as well]);
You can also add custom filters by using {@link JsonType::addCustomFilter()}.
See JsonType reference.
seeXmlResponseEquals
part xml
param mixed $xml
return void
Checks XML response equals provided XML.
Comparison is done by canonicalizing both xml`s.
Parameters can be passed either as DOMDocument, DOMNode, XML string, or array (if no attributes).
seeXmlResponseIncludes
part xml
param mixed $xml
return void
Checks XML response includes provided XML.
Comparison is done by canonicalizing both xml`s.
Parameter can be passed either as XmlBuilder, DOMDocument, DOMNode, XML string, or array (if no attributes).
see https://php.net/manual/en/features.file-upload.post-method.php
see codecept_data_dir()
param string $url
param array|string|\JsonSerializable $params
param array $files A list of filenames or “mocks” of $_FILES (each entry being an array with the following
keys: name, type, error, size, tmp_name (pointing to the real file path). Each key works
as the “name” attribute of a file input field.
Sends a POST request to given uri. Parameters and files can be provided separately.
Example:
<?php//simple POST call$response=$I->sendPost('/message',['subject'=>'Read this!','to'=>'[email protected]']);//simple upload method$I->sendPost('/message/24',['inline'=>0],['attachmentFile'=>codecept_data_dir('sample_file.pdf')]);//uploading a file with a custom name and mime-type. This is also useful to simulate upload errors.$I->sendPost('/message/24',['inline'=>0],['attachmentFile'=>['name'=>'document.pdf','type'=>'application/pdf','error'=>UPLOAD_ERR_OK,'size'=>filesize(codecept_data_dir('sample_file.pdf')),'tmp_name'=>codecept_data_dir('sample_file.pdf')]]);// If your field names contain square brackets (e.g. `<input type="text" name="form[task]">`),// PHP parses them into an array. In this case you need to pass the fields like this:$I->sendPost('/add-task',['form'=>['task'=>'lorem ipsum','category'=>'miscellaneous',]]);
You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.