61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
							 | 
						||
| 
								 | 
							
								    print "This script must be run from the command line\n";
							 | 
						||
| 
								 | 
							
								    exit();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
							 | 
						||
| 
								 | 
							
								define('STATUSNET', true);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require_once INSTALLDIR . '/lib/common.php';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class MagicEnvelopeTest extends PHPUnit_Framework_TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Test that MagicEnvelope builds the correct plaintext for signing.
							 | 
						||
| 
								 | 
							
								     * @dataProvider provider
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testSignatureText($env, $expected)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $magic = new MagicEnvelope;
							 | 
						||
| 
								 | 
							
								        $text = $magic->signingText($env);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expected, $text, "'$text' should be '$expected'");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    static public function provider()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return array(
							 | 
						||
| 
								 | 
							
								            array(
							 | 
						||
| 
								 | 
							
								                // Sample case given in spec:
							 | 
						||
| 
								 | 
							
								                // http://salmon-protocol.googlecode.com/svn/trunk/draft-panzer-magicsig-00.html#signing
							 | 
						||
| 
								 | 
							
								                array(
							 | 
						||
| 
								 | 
							
								                    'data' => 'Tm90IHJlYWxseSBBdG9t',
							 | 
						||
| 
								 | 
							
								                    'data_type' => 'application/atom+xml',
							 | 
						||
| 
								 | 
							
								                    'encoding' => 'base64url',
							 | 
						||
| 
								 | 
							
								                    'alg' => 'RSA-SHA256'
							 | 
						||
| 
								 | 
							
								                ),
							 | 
						||
| 
								 | 
							
								                'Tm90IHJlYWxseSBBdG9t.YXBwbGljYXRpb24vYXRvbSt4bWw=.YmFzZTY0dXJs.UlNBLVNIQTI1Ng=='
							 | 
						||
| 
								 | 
							
								            )
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Test that MagicEnvelope builds the correct plaintext for signing.
							 | 
						||
| 
								 | 
							
								     * @dataProvider provider
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testSignatureTextCompat($env, $expected)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        // Our old code didn't add the extra fields, just used the armored text.
							 | 
						||
| 
								 | 
							
								        $alt = $env['data'];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $magic = new MagicEnvelopeCompat;
							 | 
						||
| 
								 | 
							
								        $text = $magic->signingText($env);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($alt, $text, "'$text' should be '$alt'");
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |