diff options
-rw-r--r-- | Services/Yadis/Manager.php | 2 | ||||
-rw-r--r-- | Tests/Auth/OpenID/Discover.php | 37 |
2 files changed, 38 insertions, 1 deletions
diff --git a/Services/Yadis/Manager.php b/Services/Yadis/Manager.php index e7eca71..524eea2 100644 --- a/Services/Yadis/Manager.php +++ b/Services/Yadis/Manager.php @@ -384,7 +384,7 @@ class Services_Yadis_Discovery { function getNextService($discover_cb, &$fetcher) { $manager = $this->getManager(); - if (!$manager) { + if (!$manager || (!$manager->services)) { $this->destroyManager(); $http_response = array(); diff --git a/Tests/Auth/OpenID/Discover.php b/Tests/Auth/OpenID/Discover.php index f3e3eb7..d302fa9 100644 --- a/Tests/Auth/OpenID/Discover.php +++ b/Tests/Auth/OpenID/Discover.php @@ -363,6 +363,15 @@ class Tests_Auth_OpenID_DiscoverSession { } } +$__Tests_BOGUS_SERVICE = new Auth_OpenID_ServiceEndpoint(); +$__Tests_BOGUS_SERVICE->identity_url = "=really.bogus.endpoint"; + +function __serviceCheck_discover_cb($url, $fetcher) +{ + global $__Tests_BOGUS_SERVICE; + return array($__Tests_BOGUS_SERVICE); +} + class Tests_Auth_OpenID_Discover extends _DiscoveryBase { function _usedYadis($service) { @@ -437,6 +446,34 @@ class Tests_Auth_OpenID_Discover extends _DiscoveryBase { } } + function test_serviceCheck() + { + global $__Tests_BOGUS_SERVICE; + + $url = "http://bogus.xxx/"; + $sess =& new Tests_Auth_OpenID_DiscoverSession(); + $disco =& new Services_Yadis_Discovery($sess, $url); + + # Set an empty manager to be sure it gets blown away + $manager =& new Services_Yadis_Manager($url, null, array(), + $disco->getSessionKey()); + + $loader =& new Services_Yadis_ManagerLoader(); + $disco->session->set($disco->session_key, + serialize($loader->toSession($manager))); + + $docs = array(); + $fetcher =& new _DiscoveryMockFetcher($docs); + + $result = $disco->getNextService('__serviceCheck_discover_cb', $fetcher); + + $newMan = $disco->getManager(); + + $currentService = $newMan->_current; + $this->assertEquals($currentService->identity_url, + $__Tests_BOGUS_SERVICE->identity_url); + } + function test_noOpenID() { $this->fetcher->documents = array( |