Skip to content

PHP package with class to assert PSR-7 responses

License

Notifications You must be signed in to change notification settings

bauhausphp/assert-psr-response

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Coverage

Stable Version Downloads PHP Version License

Assert PSR Response

This composer package aims to provide an easy way to assert PSR-7 responses.

Motivation

I created this package because my constant need of asserting only certain values of PSR responses during acceptance tests.

Installation

Install it using Composer:

$ composer require bauhaus/assert-psr-response

Usage

<?php

use Bauhaus\PsrResponseAssertion\PsrResponseAssertion;
use Bauhaus\PsrResponseAssertion\Matchers\HeaderLine;
use Bauhaus\PsrResponseAssertion\Matchers\StatusCode;

$assertion = PsrResponseAssertion::with(
   StatusCode::equalTo(200),
   HeaderLine::equalTo('Content-Type', 'application/json')
);

$psrResponse = // retrieve it from somewhere ...
$psrResponse = $psrResponse
   ->withStatus(404)
   ->withHeader('Content-Type', 'text/html');

$assertion->assert($psrResponse);
// throw PsrResponseAssertionException with message:
// Actual response status code '404' is not equal to the expected '200'
// Actual response header line 'Content-Type' 'text/html' is not equal to the expected 'application/json'

Available Matchers

  • StatusCode::equalTo(200)
  • HeaderLine::equalTo('Header-Name', 'Header-Value')
  • JsonBody::equalTo('{"field":"value"}')

Contribution

There is two ways to contribute with this project. The first one is by opening an issue here. The second one is by coding:

  1. Fork this project and clone it on your local dev environment
  2. Install dependencies throught the command: composer install
  3. Run the locally tests before ubmiting a pull request:
  • To test code standards: composer run test:cs
  • To run unit tests: composer run test:unit
  • To run all tests in a roll: composer run tests