From 4106c401e635e97dc4f52e89b30c4110840cd7c4 Mon Sep 17 00:00:00 2001 From: Andy Summers <andrew.summers@wisc.edu> Date: Mon, 25 Jul 2016 14:58:59 -0500 Subject: [PATCH] Add test for user with no email --- ...ederatedPreauthUserDetailsProviderTest.php | 71 +++++++++++++++---- 1 file changed, 56 insertions(+), 15 deletions(-) diff --git a/src/test/edu/wisc/doit/FederatedPreauthUserDetailsProviderTest.php b/src/test/edu/wisc/doit/FederatedPreauthUserDetailsProviderTest.php index d0c5b71..4accd8e 100644 --- a/src/test/edu/wisc/doit/FederatedPreauthUserDetailsProviderTest.php +++ b/src/test/edu/wisc/doit/FederatedPreauthUserDetailsProviderTest.php @@ -9,6 +9,9 @@ use edu\wisc\doit\FederatedPreauthUserDetailsProvider; class FederatedPreauthUserDetailsProviderTest extends \PHPUnit_Framework_TestCase { + /** @var array */ + private $attributes; + /** @var UserDetailsProvider */ private $userProvider; @@ -23,21 +26,13 @@ class FederatedPreauthUserDetailsProviderTest extends \PHPUnit_Framework_TestCas return null; } - $attributes = json_decode($jsonString, true); - putenv(UserDetailsProvider::FED_EPPN . '=' . $attributes[UserDetailsProvider::FED_EPPN]); - putenv(UserDetailsProvider::FED_SPVI . '=' . $attributes[UserDetailsProvider::FED_SPVI]); - putenv(UserDetailsProvider::FED_FULLNAME . '=' . $attributes[UserDetailsProvider::FED_FULLNAME]); - putenv(UserDetailsProvider::FED_FIRST_NAME . '=' . $attributes[UserDetailsProvider::FED_FIRST_NAME]); - putenv(UserDetailsProvider::FED_LAST_NAME . '=' . $attributes[UserDetailsProvider::FED_LAST_NAME]); - putenv(UserDetailsProvider::UDDS . '=' . implode(",", $attributes[UserDetailsProvider::UDDS])); - putenv(UserDetailsProvider::FED_EMAIL . '=' . $attributes[UserDetailsProvider::FED_EMAIL]); - putenv(UserDetailsProvider::SOURCE . '=' . $attributes[UserDetailsProvider::SOURCE]); - putenv(UserDetailsProvider::ISIS_EMPLID . '=' . $attributes[UserDetailsProvider::ISIS_EMPLID]); - putenv(UserDetailsProvider::SHIB_SESSION_ID . '=' . $attributes[UserDetailsProvider::SHIB_SESSION_ID]); + $this->attributes = json_decode($jsonString, true); } - public function testLoadUser() { - $this->userProvider = new FederatedPreauthUserDetailsProvider(); + public function testLoadUser() + { + $this->setupHttpPreauthEnvironment(); + $this->userProvider = new FederatedPreauthUserDetailsProvider(true); $user = $this->userProvider->loadUser(); $this->assertNotNull($user); $this->assertEquals("bbadger@wisc.edu", $user->getEppn()); @@ -50,12 +45,58 @@ class FederatedPreauthUserDetailsProviderTest extends \PHPUnit_Framework_TestCas $this->assertEquals("BADGER", $user->getLastName()); } - public function testLoadUserWithNoEPPN() { - $this->userProvider = new FederatedPreauthUserDetailsProvider(); + public function testLoadUserWithNoEPPN() + { + $this->setupHttpPreauthEnvironment(); + $this->userProvider = new FederatedPreauthUserDetailsProvider(true); // Clear Shib session ID to simulate no session putenv(UserDetailsProvider::SHIB_SESSION_ID); $user = $this->userProvider->loadUser(); $this->assertNull($user); } + public function testLoadUserWithNoEmail() + { + $this->setupHttpPreauthEnvironment(); + $this->userProvider = new FederatedPreauthUserDetailsProvider(true); + // Clear email to simulate no email + putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_EMAIL)); + $user = $this->userProvider->loadUser(); + $this->assertFalse($user->getEmailAddress()); + } + + /** + * Setup environment to simulate a Preauth (Shib) environment. + */ + private function setupPreauthEnvironment() + { + putenv(UserDetailsProvider::FED_EPPN . '=' . $this->attributes[UserDetailsProvider::FED_EPPN]); + putenv(UserDetailsProvider::FED_SPVI . '=' . $this->attributes[UserDetailsProvider::FED_SPVI]); + putenv(UserDetailsProvider::FED_FULLNAME . '=' . $this->attributes[UserDetailsProvider::FED_FULLNAME]); + putenv(UserDetailsProvider::FED_FIRST_NAME . '=' . $this->attributes[UserDetailsProvider::FED_FIRST_NAME]); + putenv(UserDetailsProvider::FED_LAST_NAME . '=' . $this->attributes[UserDetailsProvider::FED_LAST_NAME]); + putenv(UserDetailsProvider::UDDS . '=' . implode(",", $this->attributes[UserDetailsProvider::UDDS])); + putenv(UserDetailsProvider::FED_EMAIL . '=' . $this->attributes[UserDetailsProvider::FED_EMAIL]); + putenv(UserDetailsProvider::SOURCE . '=' . $this->attributes[UserDetailsProvider::SOURCE]); + putenv(UserDetailsProvider::ISIS_EMPLID . '=' . $this->attributes[UserDetailsProvider::ISIS_EMPLID]); + putenv(UserDetailsProvider::SHIB_SESSION_ID . '=' . $this->attributes[UserDetailsProvider::SHIB_SESSION_ID]); + } + + /** + * Setup environment to simulate HTTP Preauth. + */ + private function setupHttpPreauthEnvironment() + { + putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_EPPN) . '=' . $this->attributes[UserDetailsProvider::FED_EPPN]); + putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_SPVI) . '=' . $this->attributes[UserDetailsProvider::FED_SPVI]); + putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_FULLNAME) . '=' . $this->attributes[UserDetailsProvider::FED_FULLNAME]); + putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_FIRST_NAME) . '=' . $this->attributes[UserDetailsProvider::FED_FIRST_NAME]); + putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_LAST_NAME) . '=' . $this->attributes[UserDetailsProvider::FED_LAST_NAME]); + putenv('HTTP_' . strtoupper(UserDetailsProvider::UDDS) . '=' . implode(",", $this->attributes[UserDetailsProvider::UDDS])); + putenv('HTTP_' . strtoupper(UserDetailsProvider::FED_EMAIL) . '=' . $this->attributes[UserDetailsProvider::FED_EMAIL]); + putenv('HTTP_' . strtoupper(UserDetailsProvider::SOURCE) . '=' . $this->attributes[UserDetailsProvider::SOURCE]); + putenv('HTTP_' . strtoupper(UserDetailsProvider::ISIS_EMPLID) . '=' . $this->attributes[UserDetailsProvider::ISIS_EMPLID]); + putenv(UserDetailsProvider::SHIB_SESSION_ID . '=' . $this->attributes[UserDetailsProvider::SHIB_SESSION_ID]); + } + } -- GitLab