Codeception extension to make working with Phiremock Server even easier. It allows to start a Phiremock Server before a suite is executed and stop it when the suite ends.
"require-dev": {
"mcustiel/phiremock-codeception-extension": "^2.0"
}
Optionally, you can install Phiremock Server in case you want to have it between your dependencies. If not, you need to specify the path to phiremock in the configuration.
"require-dev": {
"mcustiel/phiremock-codeception-extension": "^2.0",
"mcustiel/phiremock-server": "^1.0",
"guzzlehttp/guzzle": "^6.0"
Phiremock server has been made an optional dependency in case you want to run it from a phar file, a global composer dependency or in a docker container, and not have it as a project dependency.
extensions:
enabled:
- \Codeception\Extension\Phiremock
config:
\Codeception\Extension\Phiremock:
listen: 127.0.0.1:18080 # defaults to 0.0.0.0:8086
bin_path: ../vendor/bin # defaults to codeception_dir/../vendor/bin
logs_path: /var/log/my_app/tests/logs # defaults to codeception's tests output dir
debug: true # defaults to false
start_delay: 1 # default to 0
expectations_path: /my/expectations/path # defaults to tests/_expectations
server_factory: \My\FactoryClass # defaults to 'default'
extra_instances: [] # deaults to an empty array
suites: [] # defaults to an empty array
certificate: /path/to/cert # defaults to null
certificate_key: /path/to/cert-key # defaults to null
cert_passphrase: 'my-pass' # defaults to null
Note: Since Codeception version 2.2.7, extensions configuration can be added directly in the suite configuration file. That will avoid phiremock to be started for every suite.
Specifies the interface and port where phiremock must listen for requests.
Default: 0.0.0.0:8086
Path where Phiremock Server's "binary" is located. You can, for instance, point to the location of the phar in your file system.
Default: codeception_dir/../vendor/bin/phiremock
Path where to write the output.
Default: codeception's tests output dir
Whether to write debug data to log file.
Default: false
Time to wait after Phiremock Server is started before running the tests (used to give time to Phiremock Server to boot)
Default: 0
Specifies a directory to search for json files defining expectations to load by default.
Default: codecption_dir/_expectations
Path to a certificate file to allow phiremock-server to listen for secure https connections.
Default: null. Meaning phiremock will only listen on unsecured http connections.
Path to the certificate key file.
Default: null.
Path to the certificate passphrase used to encrypt the certificate (only needed if encrypted).
Default: null. Meaning no decryption based in passphrase will be performed.
Specifies a list of suites for which the phiremock-server must be executed.
Default: [] Empty array, meaning that phiremock will be executed for each suite.
Allows to specify more instances of phiremock-server to run. This is useful if you want, for instance, run one instance listening for http and one listening for https connections. Each instance has its own configuration, and can separately run for different suites.
Default: [] Empty array, meaning that no extra phiremock-server instances are configured.
Example:
extensions:
enabled:
- \Codeception\Extension\Phiremock
config:
\Codeception\Extension\Phiremock:
listen: 127.0.0.1:18080
debug: true
start_delay: 1
expectations_path: /my/expectations/path-1
suites:
- acceptance
extra_instances:
-
listen: 127.0.0.1:18081
debug: true
start_delay: 1
expectations_path: /my/expectations/path-2
suites:
- acceptance
- api
certificate: /path/to/cert
certificate_key: /path/to/cert-key
cert_passphrase: 'my-pass'
Specifies a Factory class extending \Mcustiel\Phiremock\Server\Factory\Factory
. Useful if you want to provide your own PSR. This works only if you install phiremock as a local dependency required in your composer file.
Default: default
Example: If this is in your composer.json:
"require-dev": {
"mcustiel/phiremock-codeception-extension": "v2.0",
"mcustiel/phiremock-server": "^1.0",
"guzzlehttp/guzzle": "^7.0"
The you can create a factory as follows:
<?php
namespace My\Namespace;
use GuzzleHttp;
use Mcustiel\Phiremock\Server\Factory\Factory;
use Psr\Http\Client\ClientInterface;
class FactoryWithGuzzle7 extends Factory
{
public function createHttpClient(): ClientInterface
{
return new GuzzleHttp\Client();
}
}
and in the extension config provide the fully qualified namespace to that class:
enabled:
- \Codeception\Extension\Phiremock
config:
\Codeception\Extension\Phiremock:
server_factory: \My\Namespace\FactoryWithGuzzle7
- Phiremock Server: https://github.com/mcustiel/phiremock-server
- Phiremock Codeception Module: https://github.com/mcustiel/phiremock-codeception-module