2017 © Pedro Peláez
 

library simplesamlphp-test-utils

Utilities to aid in testing simpleSAMLphp modules

image

cirrusidentity/simplesamlphp-test-utils

Utilities to aid in testing simpleSAMLphp modules

  • Friday, March 2, 2018
  • by pradtke
  • Repository
  • 4 Watchers
  • 0 Stars
  • 50 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 14 % Grown

The README.md

Build Status, (*1)

simplesamlphp-test-utils

Utilities to aid in testing SimpleSAMLphp modules, (*2)

Installation

Install as a dev dependency using composer, (*3)

composer require --dev  cirrusidentity/simplesamlphp-test-utils:dev-master

Update the dependency, (*4)

composer update -dev  cirrusidentity/simplesamlphp-test-utils

Usage

This project makes heavy use of AspectMock to make SSP's internal easier to test. Adjust your phpunit bootstrap.php per https://github.com/Codeception/AspectMock to setup AspectMock and also ensure you set backupGlobals="false" in phpunit.xml. See this projects boostrap.php on some workarounds for getting AspectMock to play nicely with SSP's custom class loader, (*5)

You can sanity check your project by calling SanityChecker::confirmAspectMockConfigured() in a test. See AspectMockConfiguredTest for an example., (*6)

Clearing Static State

You should reset AspectMock after each test., (*7)

use AspectMock\Test as test;
...
    protected function tearDown() {
        test::clean(); // remove all registered test doubles
    }

Several SSP components also cache things across all tests. Some of these classes are marked with the \SimpleSAML\Utils\ClearableState interface and you can clear this state at the appropriate time for your tests., (*8)

Mock Redirects

Your module may need to redirect the user somewhere. If you try to create a unit test for a redirect you'll normally have trouble since SSP's redirect method eventually calls exit You can use MockHttp (which internally uses AspectMock) to change the behavior of the redirect method to throw an exception instead. You can then catch the exception and asserted the correct URL was being redirect to, (*9)

        // Enable throwing an exception when redirects would normally be called.
        MockHttp::throwOnRedirectTrustedURL();
        $params = [
            'state' => '1234'
        ];
        try {
            HTTP::redirectTrustedURL('http://my.url.com', $params);
            $this->fail('Exception expected');
        } catch (RedirectException $e) {
            $this->assertEquals('redirectTrustedURL', $e->getMessage());
            $this->assertEquals('http://my.url.com', $e->getUrl());
            $this->assertEquals($params, $e->getParams());
        }

Mock Auth Sources

See MockAuthSourceTest. bootstrap.php needs to explicitly load the Source.php file, (*10)

$kernel->loadFile($projectRoot . '/vendor/simplesamlphp/simplesamlphp/lib/SimpleSAML/Auth/Source.php');

The Versions

02/03 2018

dev-master

9999999-dev

Utilities to aid in testing simpleSAMLphp modules

  Sources   Download

LGPL-2.1-only

The Requires

 

The Development Requires

simplesamlphp