Exemplo n.º 1
0
    /**
     * testing discovery
     *
     */
    public function testDiscovery()
    {
        $storage = new Zend_OpenId_Consumer_Storage_File(dirname(__FILE__)."/_files/consumer");
        $consumer = new Zend_OpenId_ConsumerHelper($storage);
        $http = new Zend_Http_Client(null,
            array(
                'maxredirects' => 4,
                'timeout'      => 15,
                'useragent'    => 'Zend_OpenId'
            ));
        $test = new Zend_Http_Client_Adapter_Test();
        $http->setAdapter($test);
        $consumer->SetHttpClient($http);

        // Bad response
        $storage->delDiscoveryInfo(self::ID);
        $id = self::ID;
        $this->assertFalse( $consumer->discovery($id, $server, $version) );

        // Test HTML based discovery (OpenID 1.1)
        $storage->delDiscoveryInfo(self::ID);
        $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" .
                           "<html><head>\n" .
                           "<link rel=\"openid.server\" href=\"" . self::SERVER . "\">\n" .
                           "<link rel=\"openid.delegate\" href=\"" . self::REAL_ID . "\">\n" .
                           "</head><body</body></html>\n");
        $id = self::ID;
        $this->assertTrue( $consumer->discovery($id, $server, $version) );
        $this->assertSame( self::REAL_ID, $id );
        $this->assertSame( self::SERVER, $server );
        $this->assertSame( 1.1, $version );

        // Test HTML based discovery (OpenID 1.1)
        $storage->delDiscoveryInfo(self::ID);
        $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" .
                           "<html><head>\n" .
                           "<link href=\"" . self::SERVER . "\" rel=\"openid.server\">\n" .
                           "<link href=\"" . self::REAL_ID . "\" rel=\"openid.delegate\">\n" .
                           "</head><body</body></html>\n");
        $id = self::ID;
        $this->assertTrue( $consumer->discovery($id, $server, $version) );
        $this->assertSame( self::REAL_ID, $id );
        $this->assertSame( self::SERVER, $server );
        $this->assertSame( 1.1, $version );

        // Test HTML based discovery (OpenID 2.0)
        $storage->delDiscoveryInfo(self::ID);
        $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" .
                           "<html><head>\n" .
                           "<link rel=\"openid2.provider\" href=\"" . self::SERVER . "\">\n" .
                           "<link rel=\"openid2.local_id\" href=\"" . self::REAL_ID . "\">\n" .
                           "</head><body</body></html>\n");
        $id = self::ID;
        $this->assertTrue( $consumer->discovery($id, $server, $version) );
        $this->assertSame( self::REAL_ID, $id );
        $this->assertSame( self::SERVER, $server );
        $this->assertSame( 2.0, $version );

        // Test HTML based discovery (OpenID 2.0)
        $storage->delDiscoveryInfo(self::ID);
        $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" .
                           "<html><head>\n" .
                           "<link href=\"" . self::SERVER . "\" rel=\"openid2.provider\">\n" .
                           "<link href=\"" . self::REAL_ID . "\" rel=\"openid2.local_id\">\n" .
                           "</head><body</body></html>\n");
        $id = self::ID;
        $this->assertTrue( $consumer->discovery($id, $server, $version) );
        $this->assertSame( self::REAL_ID, $id );
        $this->assertSame( self::SERVER, $server );
        $this->assertSame( 2.0, $version );

        // Test HTML based discovery (OpenID 1.1 and 2.0)
        $storage->delDiscoveryInfo(self::ID);
        $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" .
                           "<html><head>\n" .
                           "<link rel=\"openid2.provider\" href=\"" . self::SERVER . "\">\n" .
                           "<link rel=\"openid2.local_id\" href=\"" . self::REAL_ID . "\">\n" .
                           "<link rel=\"openid.server\" href=\"" . self::SERVER . "\">\n" .
                           "<link rel=\"openid.delegate\" href=\"" . self::REAL_ID . "\">\n" .
                           "</head><body</body></html>\n");
        $id = self::ID;
        $this->assertTrue( $consumer->discovery($id, $server, $version) );
        $this->assertSame( self::REAL_ID, $id );
        $this->assertSame( self::SERVER, $server );
        $this->assertSame( 2.0, $version );

        // Test HTML based discovery (OpenID 1.1) (single quotes)
        $storage->delDiscoveryInfo(self::ID);
        $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" .
                           "<html><head>\n" .
                           "<link rel='openid.server' href='" . self::SERVER . "'>\n" .
                           "<link rel='openid.delegate' href='" . self::REAL_ID . "'>\n" .
                           "</head><body</body></html>\n");
        $id = self::ID;
        $this->assertTrue( $consumer->discovery($id, $server, $version) );
        $this->assertSame( self::REAL_ID, $id );
        $this->assertSame( self::SERVER, $server );
        $this->assertSame( 1.1, $version );

        // Test HTML based discovery (OpenID 1.1) (single quotes)
        $storage->delDiscoveryInfo(self::ID);
        $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" .
                           "<html><head>\n" .
                           "<link href='" . self::SERVER . "' rel='openid.server'>\n" .
                           "<link href='" . self::REAL_ID . "' rel='openid.delegate'>\n" .
                           "</head><body</body></html>\n");
        $id = self::ID;
        $this->assertTrue( $consumer->discovery($id, $server, $version) );
        $this->assertSame( self::REAL_ID, $id );
        $this->assertSame( self::SERVER, $server );
        $this->assertSame( 1.1, $version );

        // Test HTML based discovery (OpenID 2.0) (single quotes)
        $storage->delDiscoveryInfo(self::ID);
        $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" .
                           "<html><head>\n" .
                           "<link rel='openid2.provider' href='" . self::SERVER . "'>\n" .
                           "<link rel='openid2.local_id' href='" . self::REAL_ID . "'>\n" .
                           "</head><body</body></html>\n");
        $id = self::ID;
        $this->assertTrue( $consumer->discovery($id, $server, $version) );
        $this->assertSame( self::REAL_ID, $id );
        $this->assertSame( self::SERVER, $server );
        $this->assertSame( 2.0, $version );

        // Test HTML based discovery (OpenID 2.0) (single quotes)
        $storage->delDiscoveryInfo(self::ID);
        $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" .
                           "<html><head>\n" .
                           "<link href='" . self::SERVER . "' rel='openid2.provider'>\n" .
                           "<link href='" . self::REAL_ID . "' rel='openid2.local_id'>\n" .
                           "</head><body</body></html>\n");
        $id = self::ID;
        $this->assertTrue( $consumer->discovery($id, $server, $version) );
        $this->assertSame( self::REAL_ID, $id );
        $this->assertSame( self::SERVER, $server );
        $this->assertSame( 2.0, $version );

        // Test HTML based discovery (OpenID 1.1 and 2.0) (single quotes)
        $storage->delDiscoveryInfo(self::ID);
        $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" .
                           "<html><head>\n" .
                           "<link rel='openid2.provider' href='" . self::SERVER . "'>\n" .
                           "<link rel='openid2.local_id' href='" . self::REAL_ID . "'>\n" .
                           "<link rel='openid.server' href='" . self::SERVER . "'>\n" .
                           "<link rel='openid.delegate' href='" . self::REAL_ID . "'>\n" .
                           "</head><body</body></html>\n");
        $id = self::ID;
        $this->assertTrue( $consumer->discovery($id, $server, $version) );
        $this->assertSame( self::REAL_ID, $id );
        $this->assertSame( self::SERVER, $server );
        $this->assertSame( 2.0, $version );

        // Wrong HTML
        $storage->delDiscoveryInfo(self::ID);
        $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" .
                           "<html><head>\n" .
                           "</head><body</body></html>\n");
        $id = self::ID;
        $this->assertFalse( $consumer->discovery($id, $server, $version) );
    }
Exemplo n.º 2
0
 /**
  * testing discovery
  *
  */
 public function testDiscovery()
 {
     $storage = new Zend_OpenId_Consumer_Storage_File(dirname(__FILE__) . "/_files/consumer");
     $consumer = new Zend_OpenId_ConsumerHelper($storage);
     $http = new Zend_Http_Client(null, array('maxredirects' => 4, 'timeout' => 15, 'useragent' => 'Zend_OpenId'));
     $test = new Zend_Http_Client_Adapter_Test();
     $http->setAdapter($test);
     $consumer->SetHttpClient($http);
     // Bad response
     $storage->delDiscoveryInfo(self::ID);
     $id = self::ID;
     $this->assertFalse($consumer->discovery($id, $server, $version));
     // Test Yardis Discovery
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<meta http-equiv=\"X-XRDS-Location\" content=\"" . self::SERVER . "\" />" . "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" . "<xrds:XRDS xmlns:xrds=\"xri://\$xrds\" xmlns=\"xri://\$xrd*(\$v*2.0)\">\n" . "  <XRD>\n" . "  <Service priority=\"0\">\n" . "  <Type>http://specs.openid.net/auth/2.0/server</Type>\n" . "  <URI>" . self::SERVER . "</URI>\n" . "  </Service>\n" . "  </XRD>\n" . "</xrds:XRDS>");
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame("http://specs.openid.net/auth/2.0/identifier_select", $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(2.0, $version);
     // Test HTML based discovery (OpenID 1.1)
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<link rel=\"openid.server\" href=\"" . self::SERVER . "\">\n" . "<link rel=\"openid.delegate\" href=\"" . self::REAL_ID . "\">\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame(self::REAL_ID, $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(1.1, $version);
     // Test HTML based discovery (OpenID 1.1)
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<link href=\"" . self::SERVER . "\" rel=\"openid.server\">\n" . "<link href=\"" . self::REAL_ID . "\" rel=\"openid.delegate\">\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame(self::REAL_ID, $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(1.1, $version);
     // Test HTML based discovery (OpenID 2.0)
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<link rel=\"openid2.provider\" href=\"" . self::SERVER . "\">\n" . "<link rel=\"openid2.local_id\" href=\"" . self::REAL_ID . "\">\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame(self::REAL_ID, $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(2.0, $version);
     // Test HTML based discovery (OpenID 2.0)
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<link href=\"" . self::SERVER . "\" rel=\"openid2.provider\">\n" . "<link href=\"" . self::REAL_ID . "\" rel=\"openid2.local_id\">\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame(self::REAL_ID, $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(2.0, $version);
     // Test HTML based discovery (OpenID 1.1 and 2.0)
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<link rel=\"openid2.provider\" href=\"" . self::SERVER . "\">\n" . "<link rel=\"openid2.local_id\" href=\"" . self::REAL_ID . "\">\n" . "<link rel=\"openid.server\" href=\"" . self::SERVER . "\">\n" . "<link rel=\"openid.delegate\" href=\"" . self::REAL_ID . "\">\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame(self::REAL_ID, $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(2.0, $version);
     // Test HTML based discovery (OpenID 1.1) (single quotes)
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<link rel='openid.server' href='" . self::SERVER . "'>\n" . "<link rel='openid.delegate' href='" . self::REAL_ID . "'>\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame(self::REAL_ID, $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(1.1, $version);
     // Test HTML based discovery (OpenID 1.1) (single quotes)
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<link href='" . self::SERVER . "' rel='openid.server'>\n" . "<link href='" . self::REAL_ID . "' rel='openid.delegate'>\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame(self::REAL_ID, $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(1.1, $version);
     // Test HTML based discovery (OpenID 2.0) (single quotes)
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<link rel='openid2.provider' href='" . self::SERVER . "'>\n" . "<link rel='openid2.local_id' href='" . self::REAL_ID . "'>\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame(self::REAL_ID, $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(2.0, $version);
     // Test HTML based discovery (OpenID 2.0) (single quotes)
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<link href='" . self::SERVER . "' rel='openid2.provider'>\n" . "<link href='" . self::REAL_ID . "' rel='openid2.local_id'>\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame(self::REAL_ID, $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(2.0, $version);
     // Test HTML based discovery (OpenID 1.1 and 2.0) (single quotes)
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<link rel='openid2.provider' href='" . self::SERVER . "'>\n" . "<link rel='openid2.local_id' href='" . self::REAL_ID . "'>\n" . "<link rel='openid.server' href='" . self::SERVER . "'>\n" . "<link rel='openid.delegate' href='" . self::REAL_ID . "'>\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame(self::REAL_ID, $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(2.0, $version);
     // Wrong HTML
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertFalse($consumer->discovery($id, $server, $version));
     // Test HTML based discovery with multivalue rel (OpenID 1.1)
     $storage->delDiscoveryInfo(self::ID);
     $test->setResponse("HTTP/1.1 200 OK\r\n\r\n" . "<html><head>\n" . "<link rel=\" aaa openid.server bbb \" href=\"" . self::SERVER . "\">\n" . "<link rel=\"aaa openid.delegate\" href=\"" . self::REAL_ID . "\">\n" . "</head><body</body></html>\n");
     $id = self::ID;
     $this->assertTrue($consumer->discovery($id, $server, $version));
     $this->assertSame(self::REAL_ID, $id);
     $this->assertSame(self::SERVER, $server);
     $this->assertSame(1.1, $version);
 }