W3cubDocs

/CakePHP 4.4

Trait IntegrationTestTrait

A trait intended to make integration tests of your controllers easier.

This test class provides a number of helper methods and features that make dispatching requests and checking their responses simpler. It favours full integration tests over mock objects as you can test more of your code easily and avoid some of the maintenance pitfalls that mock objects create.

Namespace: Cake\TestSuite

Property Summary

  • $_appArgs protected
    array|null

    The customized application constructor arguments.

  • $_appClass protected
    string|null

    The customized application class name.

  • $_controller protected
    Cake\Controller\Controller|null

    The controller used in the last request.

  • $_cookie protected
    array

    Cookie data to use in the next request.

  • string|null
  • $_csrfKeyName protected
    string

    The name that will be used when retrieving the csrf token.

  • $_csrfToken protected
    bool

    Boolean flag for whether the request should have a CSRF token added.

  • $_exception protected
    Throwable|null

    The exception being thrown if the case.

  • $_flashMessages protected
    array

    Stored flash messages before render

  • $_layoutName protected
    string

    The last rendered layout

  • $_request protected
    array

    The data used to build the next request.

  • $_requestSession protected
    Cake\Http\Session

    The session instance from the last request

  • $_response protected
    Psr\Http\Message\ResponseInterface|null

    The response for the most recent request.

  • bool

    Boolean flag for whether the request should re-store flash messages

  • $_securityToken protected
    bool

    Boolean flag for whether the request should have a SecurityComponent token added.

  • $_session protected
    array

    Session data to use in the next request.

  • $_unlockedFields protected
    array<string>

    List of fields that are excluded from field validation.

  • $_validCiphers protected
    array<string>

    Valid cipher names for encrypted cookies.

  • $_viewName protected
    string

    The last rendered view

Method Summary

Method Detail

_addTokens() protected

_addTokens(string $url, array $data): array

Add the CSRF and Security Component tokens if necessary.

Parameters

string $url

The URL the form is being submitted on.

array $data

The request body data.

Returns

array

_buildRequest() protected

_buildRequest(string $url, string $method, array|string $data = []): array

Creates a request object with the configured options and parameters.

Parameters

string $url

The URL

string $method

The HTTP method

array|string $data optional

The request data.

Returns

array

_castToString() protected

_castToString(array $data): array

Recursively casts all data to string as that is how data would be POSTed in the real world

Parameters

array $data

POST data

Returns

array

_checkCipher() protected

_checkCipher(string $encrypt): void

Helper method for validating encryption cipher names.

Parameters

string $encrypt

The cipher name.

Returns

void

Throws

RuntimeException
When an invalid cipher is provided.

_decode() protected

_decode(string $value, string|false $encrypt, string|null $key): array|string

Decodes and decrypts a single value.

Parameters

string $value

The value to decode & decrypt.

string|false $encrypt

The encryption cipher to use.

string|null $key

Used as the security salt if specified.

Returns

array|string

_decrypt() protected

_decrypt(array<string>|string $values, string|false $mode, string|null $key = null): array|string

Decrypts $value using public $type method in Security class

Parameters

array<string>|string $values

Values to decrypt

string|false $mode

Encryption mode

string|null $key optional

Used as the security salt if specified.

Returns

array|string

_encrypt() protected

_encrypt(array|string $value, string|false $encrypt, string|null $key = null): string

Encrypts $value using public $type method in Security class

Parameters

array|string $value

Value to encrypt

string|false $encrypt

Encryption mode to use. False disabled encryption.

string|null $key optional

Used as the security salt if specified.

Returns

string

_explode() protected

_explode(string $string): array|string

Explode method to return array from string set in CookieComponent::_implode() Maintains reading backwards compatibility with 1.x CookieComponent::_implode().

Parameters

string $string

A string containing JSON encoded data, or a bare string.

Returns

array|string

_getBodyAsString() protected

_getBodyAsString(): string

Get the response body as string

Returns

string

_getCookieEncryptionKey() protected

_getCookieEncryptionKey(): string

Returns the encryption key to be used.

Returns

string

_handleError() protected

_handleError(Throwable $exception): void

Attempts to render an error response for a given exception.

This method will attempt to use the configured exception renderer. If that class does not exist, the built-in renderer will be used.

Parameters

Throwable $exception

Exception to handle.

Returns

void

_implode() protected

_implode(array $array): string

Implode method to keep keys are multidimensional arrays

Parameters

array $array

Map of key and values

Returns

string

_makeDispatcher() protected

_makeDispatcher(): Cake\TestSuite\MiddlewareDispatcher

Get the correct dispatcher instance.

Returns

Cake\TestSuite\MiddlewareDispatcher

_sendRequest() protected

_sendRequest(array|string $url, string $method, array|string $data = []): void

Creates and send the request into a Dispatcher instance.

Receives and stores the response for future inspection.

Parameters

array|string $url

The URL

string $method

The HTTP method

array|string $data optional

The request data.

Returns

void

Throws

PHPUnit\ExceptionThrowable

_url() protected

_url(string $url): array

Creates a valid request url and parameter array more like Request::_url()

Parameters

string $url

The URL

Returns

array

assertContentType() public

assertContentType(string $type, string $message = ''): void

Asserts content type

Parameters

string $type

The content-type to check for.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertCookie() public

assertCookie(mixed $expected, string $name, string $message = ''): void

Asserts cookie values

Parameters

mixed $expected

The expected contents.

string $name

The cookie name.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertCookieEncrypted() public

assertCookieEncrypted(mixed $expected, string $name, string $encrypt = 'aes', string|null $key = null, string $message = ''): void

Asserts cookie values which are encrypted by the CookieComponent.

The difference from assertCookie() is this decrypts the cookie value like the CookieComponent for this assertion.

Parameters

mixed $expected

The expected contents.

string $name

The cookie name.

string $encrypt optional

Encryption mode to use.

string|null $key optional

Encryption key used. Defaults to Security.salt.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

See Also

\Cake\Utility\CookieCryptTrait::_encrypt()

assertCookieNotSet() public

assertCookieNotSet(string $cookie, string $message = ''): void

Asserts a cookie has not been set in the response

Parameters

string $cookie

The cookie name to check

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertFileResponse() public

assertFileResponse(string $expected, string $message = ''): void

Asserts that a file with the given name was sent in the response

Parameters

string $expected

The absolute file path that should be sent in the response.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertFlashElement() public

assertFlashElement(string $expected, string $key = 'flash', string $message = ''): void

Asserts a flash element was set

Parameters

string $expected

Expected element name

string $key optional

Flash key

string $message optional

Assertion failure message

Returns

void

assertFlashElementAt() public

assertFlashElementAt(int $at, string $expected, string $key = 'flash', string $message = ''): void

Asserts a flash element was set at a certain index

Parameters

int $at

Flash index

string $expected

Expected element name

string $key optional

Flash key

string $message optional

Assertion failure message

Returns

void

assertFlashMessage() public

assertFlashMessage(string $expected, string $key = 'flash', string $message = ''): void

Asserts a flash message was set

Parameters

string $expected

Expected message

string $key optional

Flash key

string $message optional

Assertion failure message

Returns

void

assertFlashMessageAt() public

assertFlashMessageAt(int $at, string $expected, string $key = 'flash', string $message = ''): void

Asserts a flash message was set at a certain index

Parameters

int $at

Flash index

string $expected

Expected message

string $key optional

Flash key

string $message optional

Assertion failure message

Returns

void

assertHeader() public

assertHeader(string $header, string $content, string $message = ''): void

Asserts response headers

Parameters

string $header

The header to check

string $content

The content to check for.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertHeaderContains() public

assertHeaderContains(string $header, string $content, string $message = ''): void

Asserts response header contains a string

Parameters

string $header

The header to check

string $content

The content to check for.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertHeaderNotContains() public

assertHeaderNotContains(string $header, string $content, string $message = ''): void

Asserts response header does not contain a string

Parameters

string $header

The header to check

string $content

The content to check for.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertLayout() public

assertLayout(string $content, string $message = ''): void

Asserts that the search string was in the layout name.

Parameters

string $content

The content to check for.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertNoRedirect() public

assertNoRedirect(string $message = ''): void

Asserts that the Location header is not set.

Parameters

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertRedirect() public

assertRedirect(array|string|null $url = null, string $message = ''): void

Asserts that the Location header is correct. Comparison is made against a full URL.

Parameters

array|string|null $url optional

The URL you expected the client to go to. This can either be a string URL or an array compatible with Router::url(). Use null to simply check for the existence of this header.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertRedirectContains() public

assertRedirectContains(string $url, string $message = ''): void

Asserts that the Location header contains a substring

Parameters

string $url

The URL you expected the client to go to.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertRedirectEquals() public

assertRedirectEquals(array|string|null $url = null, string $message = ''): void

Asserts that the Location header is correct. Comparison is made against exactly the URL provided.

Parameters

array|string|null $url optional

The URL you expected the client to go to. This can either be a string URL or an array compatible with Router::url(). Use null to simply check for the existence of this header.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertRedirectNotContains() public

assertRedirectNotContains(string $url, string $message = ''): void

Asserts that the Location header does not contain a substring

Parameters

string $url

The URL you expected the client to go to.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertResponseCode() public

assertResponseCode(int $code, string $message = ''): void

Asserts a specific response status code.

Parameters

int $code

Status code to assert.

string $message optional

Custom message for failure.

Returns

void

assertResponseContains() public

assertResponseContains(string $content, string $message = '', bool $ignoreCase = false): void

Asserts content exists in the response body.

Parameters

string $content

The content to check for.

string $message optional

The failure message that will be appended to the generated message.

bool $ignoreCase optional

A flag to check whether we should ignore case or not.

Returns

void

assertResponseEmpty() public

assertResponseEmpty(string $message = ''): void

Assert response content is empty.

Parameters

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertResponseEquals() public

assertResponseEquals(mixed $content, string $message = ''): void

Asserts content in the response body equals.

Parameters

mixed $content

The content to check for.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertResponseError() public

assertResponseError(string $message = ''): void

Asserts that the response status code is in the 4xx range.

Parameters

string $message optional

Custom message for failure.

Returns

void

assertResponseFailure() public

assertResponseFailure(string $message = ''): void

Asserts that the response status code is in the 5xx range.

Parameters

string $message optional

Custom message for failure.

Returns

void

assertResponseNotContains() public

assertResponseNotContains(string $content, string $message = '', bool $ignoreCase = false): void

Asserts content does not exist in the response body.

Parameters

string $content

The content to check for.

string $message optional

The failure message that will be appended to the generated message.

bool $ignoreCase optional

A flag to check whether we should ignore case or not.

Returns

void

assertResponseNotEmpty() public

assertResponseNotEmpty(string $message = ''): void

Assert response content is not empty.

Parameters

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertResponseNotEquals() public

assertResponseNotEquals(mixed $content, string $message = ''): void

Asserts content in the response body not equals.

Parameters

mixed $content

The content to check for.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertResponseNotRegExp() public

assertResponseNotRegExp(string $pattern, string $message = ''): void

Asserts that the response body does not match a given regular expression.

Parameters

string $pattern

The pattern to compare against.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertResponseOk() public

assertResponseOk(string $message = ''): void

Asserts that the response status code is in the 2xx range.

Parameters

string $message optional

Custom message for failure.

Returns

void

assertResponseRegExp() public

assertResponseRegExp(string $pattern, string $message = ''): void

Asserts that the response body matches a given regular expression.

Parameters

string $pattern

The pattern to compare against.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertResponseSuccess() public

assertResponseSuccess(string $message = ''): void

Asserts that the response status code is in the 2xx/3xx range.

Parameters

string $message optional

Custom message for failure.

Returns

void

assertSession() public

assertSession(mixed $expected, string $path, string $message = ''): void

Asserts session contents

Parameters

mixed $expected

The expected contents.

string $path

The session data path. Uses Hash::get() compatible notation

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertSessionHasKey() public

assertSessionHasKey(string $path, string $message = ''): void

Asserts session key exists.

Parameters

string $path

The session data path. Uses Hash::get() compatible notation.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertSessionNotHasKey() public

assertSessionNotHasKey(string $path, string $message = ''): void

Asserts a session key does not exist.

Parameters

string $path

The session data path. Uses Hash::get() compatible notation.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

assertTemplate() public

assertTemplate(string $content, string $message = ''): void

Asserts that the search string was in the template name.

Parameters

string $content

The content to check for.

string $message optional

The failure message that will be appended to the generated message.

Returns

void

cleanup() public

cleanup(): void

Clears the state used for requests.

Returns

void

cleanupContainer() public

cleanupContainer(): void

Clears any mocks that were defined and cleans up application class configuration.

Returns

void

configApplication() public

configApplication(string $class, array|null $constructorArgs): void

Configure the application class to use in integration tests.

Parameters

string $class

The application class name.

array|null $constructorArgs

The constructor arguments for your application class.

Returns

void

configRequest() public

configRequest(array $data): void

Configures the data for the next request.

This data is cleared in the tearDown() method.

You can call this method multiple times to append into the current state. Sub-keys like 'headers' will be reset, though.

Parameters

array $data

The request data to use.

Returns

void

controllerSpy() public

controllerSpy(Cake\Event\EventInterface $event, Cake\Controller\Controller|null $controller = null): void

Adds additional event spies to the controller/view event manager.

Parameters

Cake\Event\EventInterface $event

A dispatcher event.

Cake\Controller\Controller|null $controller optional

Controller instance.

Returns

void

cookie() public

cookie(string $name, mixed $value): void

Sets a request cookie for future requests.

This method lets you configure the session data you want to be used for requests that follow. The session state is reset in each tearDown().

You can call this method multiple times to append into the current state.

Parameters

string $name

The cookie name to use.

mixed $value

The value of the cookie.

Returns

void

cookieEncrypted() public

cookieEncrypted(string $name, mixed $value, string|false $encrypt = 'aes', string|null $key = null): void

Sets a encrypted request cookie for future requests.

The difference from cookie() is this encrypts the cookie value like the CookieComponent.

Parameters

string $name

The cookie name to use.

mixed $value

The value of the cookie.

string|false $encrypt optional

Encryption mode to use.

string|null $key optional

Encryption key used. Defaults to Security.salt.

Returns

void

See Also

\Cake\Utility\CookieCryptTrait::_encrypt()

createApp() protected

createApp(): Cake\Core\HttpApplicationInterfaceCake\Core\ConsoleApplicationInterface

Create an application instance.

Uses the configuration set in configApplication().

Returns

Cake\Core\HttpApplicationInterfaceCake\Core\ConsoleApplicationInterface

delete() public

delete(array|string $url): void

Performs a DELETE request using the current request data.

The response of the dispatched request will be stored as a property. You can use various assert methods to check the response.

Parameters

array|string $url

The URL to request.

Returns

void

disableErrorHandlerMiddleware() public

disableErrorHandlerMiddleware(): void

Disable the error handler middleware.

By using this function, exceptions are no longer caught by the ErrorHandlerMiddleware and are instead re-thrown by the TestExceptionRenderer. This can be helpful when trying to diagnose/debug unexpected failures in test cases.

Returns

void

enableCsrfToken() public

enableCsrfToken(string $cookieName = 'csrfToken'): void

Calling this method will add a CSRF token to the request.

Both the POST data and cookie will be populated when this option is enabled. The default parameter names will be used.

Parameters

string $cookieName optional

The name of the csrf token cookie.

Returns

void

enableRetainFlashMessages() public

enableRetainFlashMessages(): void

Calling this method will re-store flash messages into the test session after being removed by the FlashHelper

Returns

void

enableSecurityToken() public

enableSecurityToken(): void

Calling this method will enable a SecurityComponent compatible token to be added to request data. This lets you easily test actions protected by SecurityComponent.

Returns

void

extractExceptionMessage() protected

extractExceptionMessage(Exception $exception): string

Extract verbose message for existing exception

Parameters

Exception $exception

Exception to extract

Returns

string

extractVerboseMessage() protected

extractVerboseMessage(string $message): string

Inspect controller to extract possible causes of the failed assertion

Parameters

string $message

Original message to use as a base

Returns

string

get() public

get(array|string $url): void

Performs a GET request using the current request data.

The response of the dispatched request will be stored as a property. You can use various assert methods to check the response.

Parameters

array|string $url

The URL to request.

Returns

void

getSession() protected

getSession(): Cake\TestSuite\TestSession

Returns

Cake\TestSuite\TestSession

head() public

head(array|string $url): void

Performs a HEAD request using the current request data.

The response of the dispatched request will be stored as a property. You can use various assert methods to check the response.

Parameters

array|string $url

The URL to request.

Returns

void

mockService() public

mockService(string $class, Closure $factory): $this

Add a mocked service to the container.

When the container is created the provided classname will be mapped to the factory function. The factory function will be used to create mocked services.

Parameters

string $class

The class or interface you want to define.

Closure $factory

The factory function for mocked services.

Returns

$this

modifyContainer() public

modifyContainer(Cake\Event\EventInterface $event, Cake\Core\ContainerInterface $container): Cake\Core\ContainerInterface|null

Wrap the application's container with one containing mocks.

If any mocked services are defined, the application's container will be replaced with one containing mocks. The original container will be set as a delegate to the mock container.

Parameters

Cake\Event\EventInterface $event

The event

Cake\Core\ContainerInterface $container

The container to wrap.

Returns

Cake\Core\ContainerInterface|null

options() public

options(array|string $url): void

Performs an OPTIONS request using the current request data.

The response of the dispatched request will be stored as a property. You can use various assert methods to check the response.

Parameters

array|string $url

The URL to request.

Returns

void

patch() public

patch(array|string $url, array|string $data = []): void

Performs a PATCH request using the current request data.

The response of the dispatched request will be stored as a property. You can use various assert methods to check the response.

Parameters

array|string $url

The URL to request.

array|string $data optional

The data for the request.

Returns

void

post() public

post(array|string $url, array|string $data = []): void

Performs a POST request using the current request data.

The response of the dispatched request will be stored as a property. You can use various assert methods to check the response.

Parameters

array|string $url

The URL to request.

array|string $data optional

The data for the request.

Returns

void

put() public

put(array|string $url, array|string $data = []): void

Performs a PUT request using the current request data.

The response of the dispatched request will be stored as a property. You can use various assert methods to check the response.

Parameters

array|string $url

The URL to request.

array|string $data optional

The data for the request.

Returns

void

removeMockService() public

removeMockService(string $class): $this

Remove a mocked service to the container.

Parameters

string $class

The class or interface you want to remove.

Returns

$this

session() public

session(array $data): void

Sets session data.

This method lets you configure the session data you want to be used for requests that follow. The session state is reset in each tearDown().

You can call this method multiple times to append into the current state.

Parameters

array $data

The session data to use.

Returns

void

setUnlockedFields() public

setUnlockedFields(array<string> $unlockedFields = []): void

Set list of fields that are excluded from field validation.

Parameters

array<string> $unlockedFields optional

List of fields that are excluded from field validation.

Returns

void

viewVariable() public

viewVariable(string $name): mixed

Fetches a view variable by name.

If the view variable does not exist, null will be returned.

Parameters

string $name

The view variable to get.

Returns

mixed

Property Detail

$_appArgs protected

The customized application constructor arguments.

Type

array|null

$_appClass protected

The customized application class name.

Type

string|null

$_controller protected

The controller used in the last request.

Type

Cake\Controller\Controller|null

Cookie data to use in the next request.

Type

array

$_cookieEncryptionKey protected

Type

string|null

$_csrfKeyName protected

The name that will be used when retrieving the csrf token.

Type

string

$_csrfToken protected

Boolean flag for whether the request should have a CSRF token added.

Type

bool

$_exception protected

The exception being thrown if the case.

Type

Throwable|null

$_flashMessages protected

Stored flash messages before render

Type

array

$_layoutName protected

The last rendered layout

Type

string

$_request protected

The data used to build the next request.

Type

array

$_requestSession protected

The session instance from the last request

Type

Cake\Http\Session

$_response protected

The response for the most recent request.

Type

Psr\Http\Message\ResponseInterface|null

$_retainFlashMessages protected

Boolean flag for whether the request should re-store flash messages

Type

bool

$_securityToken protected

Boolean flag for whether the request should have a SecurityComponent token added.

Type

bool

$_session protected

Session data to use in the next request.

Type

array

$_unlockedFields protected

List of fields that are excluded from field validation.

Type

array<string>

$_validCiphers protected

Valid cipher names for encrypted cookies.

Type

array<string>

$_viewName protected

The last rendered view

Type

string

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.4/trait-Cake.TestSuite.IntegrationTestTrait.html