diff --git a/src/main/edu/wisc/doit/uwphps/UserDetailsProvider.php b/src/main/edu/wisc/doit/uwphps/UserDetailsProvider.php index f211ca7ebc1959ea6c5b88a970704e855fc5454a..9ebd73553b2186a0b6a77b81140c8795fd079d34 100644 --- a/src/main/edu/wisc/doit/uwphps/UserDetailsProvider.php +++ b/src/main/edu/wisc/doit/uwphps/UserDetailsProvider.php @@ -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)); } } diff --git a/src/main/edu/wisc/doit/uwphps/preauth/FederatedPreauthUserDetailsProvider.php b/src/main/edu/wisc/doit/uwphps/preauth/FederatedPreauthUserDetailsProvider.php index baafe052d3895e0f8edec6d81066ee56714caffd..48dfdf1c0e202faba715a96eaa0a03cd20cd74d6 100644 --- a/src/main/edu/wisc/doit/uwphps/preauth/FederatedPreauthUserDetailsProvider.php +++ b/src/main/edu/wisc/doit/uwphps/preauth/FederatedPreauthUserDetailsProvider.php @@ -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( diff --git a/src/main/edu/wisc/doit/uwphps/preauth/PreauthUserDetailsProvider.php b/src/main/edu/wisc/doit/uwphps/preauth/PreauthUserDetailsProvider.php index 2406b38c705d411261b8647bf323eaa27c905163..31f826116c9ce2d19bd6a748c713aa0ec6d990c9 100644 --- a/src/main/edu/wisc/doit/uwphps/preauth/PreauthUserDetailsProvider.php +++ b/src/main/edu/wisc/doit/uwphps/preauth/PreauthUserDetailsProvider.php @@ -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( diff --git a/src/test/edu/wisc/doit/uwphps/UserDetailsProviderTest.php b/src/test/edu/wisc/doit/uwphps/UserDetailsProviderTest.php new file mode 100644 index 0000000000000000000000000000000000000000..0ce2e41ce1251a763eb7b48085d4cf0f053035a9 --- /dev/null +++ b/src/test/edu/wisc/doit/uwphps/UserDetailsProviderTest.php @@ -0,0 +1,27 @@ +<?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')); + } +}