Skip to content
Snippets Groups Projects
Commit 1477621c authored by Andrew Hoffmann's avatar Andrew Hoffmann
Browse files

Create missing tests for PreauthUserDetailsProvider

Introduce a `trait` that helps set environment variables when testing
parent 08aaa966
No related branches found
No related tags found
1 merge request!12Test all the things!
<?php
namespace edu\wisc\doit\uwphps;
trait EnvironmentHelper
{
/**
* Sets environment variables
*
* @param array $environment pairs of environment variable names and values
*/
private function setEnvironment(array $environment)
{
array_walk($environment, function ($value, $key) {
putenv("$key=$value");
});
}
/**
* Removes the given environment variable from the environment
*
* @param string $variable name of environment variable
*/
private function removeEnvironmentVariable($variable)
{
putenv($variable);
}
/**
* Converts environment variable names to their HTTP header equivalents
*
* @param array $environment
* @return array environment with variable names converted to HTTP headers
* @see UserDetailsProvider::httpHeaderFromAttribute()
*/
private function toHttpHeaders(array $environment)
{
foreach ($environment as $key => $value) {
$environment[UserDetailsProvider::httpHeaderFromAttribute($key)] = $value;
unset($environment[$key]);
}
return $environment;
}
}
<?php
namespace edu\wisc\doit\uwphps\preauth;
use edu\wisc\doit\uwphps\EnvironmentHelper;
use edu\wisc\doit\uwphps\UserDetailsProvider;
/**
* Tests for {@link PreauthUserDetailsProvider}
*/
class PreauthUserDetailsProviderTest extends \PHPUnit_Framework_TestCase
{
use EnvironmentHelper;
/** @var PreauthUserDetailsProvider */
private $provider;
/** @var PreauthUserDetailsProvider */
private $providerWithHttp;
/** @var array environment variables to be set */
private $environment;
protected function setUp()
{
$this->provider = new PreauthUserDetailsProvider(false);
$this->providerWithHttp = new PreauthUserDetailsProvider(true);
// Default environment variables
$this->environment = [
PreauthUserDetailsProvider::FULL_NAME => 'BUCKINGHAM BADGER',
PreauthUserDetailsProvider::EPPN => 'bbadger@wisc.edu',
PreauthUserDetailsProvider::FIRST_NAME => 'BUCKINGHAM',
PreauthUserDetailsProvider::EMAIL => 'bucky.badger@wisc.edu',
PreauthUserDetailsProvider::SHIB_SESSION_ID => '1234567890',
PreauthUserDetailsProvider::LAST_NAME => 'BADGER',
PreauthUserDetailsProvider::SOURCE => 'a_source',
PreauthUserDetailsProvider::PVI => 'UW123A456',
PreauthUserDetailsProvider::ISIS_EMPLID => '123456789'
];
}
/** @test */
public function loadsNullUserWhenNoSession()
{
// Ensure the Shib Session ID environment variables are deleted
$this->removeEnvironmentVariable(UserDetailsProvider::SHIB_SESSION_ID);
$this->removeEnvironmentVariable(UserDetailsProvider::SHIB_SESSION_ID_HTTP);
static::assertNull($this->provider->loadUser());
static::assertNull($this->providerWithHttp->loadUser());
}
/** @test */
public function loadsUser()
{
$this->setEnvironment($this->environment);
$user = $this->provider->loadUser();
$this->assertEquals($this->environment[PreauthUserDetailsProvider::EPPN], $user->getEppn());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::PVI], $user->getPvi());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::FULL_NAME], $user->getFullName());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::EMAIL], $user->getEmailAddress());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::SOURCE], $user->getSource());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::ISIS_EMPLID], $user->getIsisEmplid());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::FIRST_NAME], $user->getFirstName());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::LAST_NAME], $user->getLastName());
}
/** @test */
public function loadsUserWithHttpHeaders()
{
$this->setEnvironment($this->toHttpHeaders($this->environment));
$user = $this->providerWithHttp->loadUser();
$this->assertEquals($this->environment[PreauthUserDetailsProvider::EPPN], $user->getEppn());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::PVI], $user->getPvi());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::FULL_NAME], $user->getFullName());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::EMAIL], $user->getEmailAddress());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::SOURCE], $user->getSource());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::ISIS_EMPLID], $user->getIsisEmplid());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::FIRST_NAME], $user->getFirstName());
$this->assertEquals($this->environment[PreauthUserDetailsProvider::LAST_NAME], $user->getLastName());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment