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

Convert dashes to underscores when converting to HTTP headers

Changed the signature to `public static` to expose this useful function to other classes. Provided a test.
parent 75773b6d
No related branches found
No related tags found
1 merge request!12Test all the things!
......@@ -49,8 +49,8 @@ abstract class UserDetailsProvider
*
* @see https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPAttributeAccess NativeSPAttributeAccess
*/
protected function httpHeaderFromAttribute($attribute)
public static function httpHeaderFromAttribute($attribute)
{
return 'HTTP_' . strtoupper($attribute);
return 'HTTP_' . strtoupper(str_replace('-', '_', $attribute));
}
}
......@@ -34,15 +34,15 @@ class FederatedPreauthUserDetailsProvider extends UserDetailsProvider
if ($this->httpHeaders) {
$userDetails = new UWUserDetails(
getenv($this->httpHeaderFromAttribute(static::EPPN)),
getenv($this->httpHeaderFromAttribute(static::SPVI)),
getenv($this->httpHeaderFromAttribute(static::FULL_NAME)),
explode(static::DELIMITER, getenv($this->httpHeaderFromAttribute(static::UDDS))),
getenv($this->httpHeaderFromAttribute(static::EMAIL)),
getenv($this->httpHeaderFromAttribute(static::SOURCE)),
getenv($this->httpHeaderFromAttribute(static::ISIS_EMPLID)),
getenv($this->httpHeaderFromAttribute(static::FIRST_NAME)),
getenv($this->httpHeaderFromAttribute(static::LAST_NAME))
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::EPPN)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::SPVI)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::FULL_NAME)),
explode(static::DELIMITER, getenv(UserDetailsProvider::httpHeaderFromAttribute(static::UDDS))),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::EMAIL)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::SOURCE)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::ISIS_EMPLID)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::FIRST_NAME)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::LAST_NAME))
);
} else {
$userDetails = new UWUserDetails(
......
......@@ -36,15 +36,15 @@ class PreauthUserDetailsProvider extends UserDetailsProvider
if ($this->httpHeaders) {
$userDetails = new UWUserDetails(
getenv($this->httpHeaderFromAttribute(static::EPPN)),
getenv($this->httpHeaderFromAttribute(static::PVI)),
getenv($this->httpHeaderFromAttribute(static::FULL_NAME)),
explode(static::DELIMITER, getenv($this->httpHeaderFromAttribute(static::UDDS))),
getenv($this->httpHeaderFromAttribute(static::EMAIL)),
getenv($this->httpHeaderFromAttribute(static::SOURCE)),
getenv($this->httpHeaderFromAttribute(static::ISIS_EMPLID)),
getenv($this->httpHeaderFromAttribute(static::FIRST_NAME)),
getenv($this->httpHeaderFromAttribute(static::LAST_NAME))
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::EPPN)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::PVI)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::FULL_NAME)),
explode(static::DELIMITER, getenv(UserDetailsProvider::httpHeaderFromAttribute(static::UDDS))),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::EMAIL)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::SOURCE)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::ISIS_EMPLID)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::FIRST_NAME)),
getenv(UserDetailsProvider::httpHeaderFromAttribute(static::LAST_NAME))
);
} else {
$userDetails = new UWUserDetails(
......
<?php
namespace edu\wisc\doit\uwphps;
use PHPUnit\Framework\TestCase;
/**
* Tests for {@link UserDetailsProvider} concrete methods.
*/
class UserDetailsProviderTest extends TestCase
{
/** @var UserDetailsProvider */
private $provider;
public function setUp()
{
// Must use a mock because it is an abstract class
$this->provider = $this->getMockForAbstractClass(UserDetailsProvider::class);
}
/** @test */
public function convertsAttributeToHttpHeader()
{
$this->assertEquals('HTTP_STARFLEETRANK', UserDetailsProvider::httpHeaderFromAttribute('starfleetRank'));
$this->assertEquals('HTTP_SHIB_SESSION_ID', UserDetailsProvider::httpHeaderFromAttribute('Shib-Session-Id'));
}
}
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