summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Services/Yadis/Manager.php2
-rw-r--r--Tests/Auth/OpenID/Discover.php37
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(