PHP Classes

File: tests/AuthorizationTest.php

Recommend this page to a friend!
  Classes of Martin Pircher   Skylable SX PHP Client   tests/AuthorizationTest.php   Download  
File: tests/AuthorizationTest.php
Role: Unit test script
Content type: text/plain
Description: unit test
Class: Skylable SX PHP Client
Store and retrieve files in Skylable cloud cluster
Author: By
Last change:
Date: 9 years ago
Size: 3,385 bytes
 

Contents

Class file image Download
<?php
/**
 * Skylable SX PHP Client
 *
 * @package skylablesx
 * @author Martin Pircher <mplx+coding@donotreply.at>
 * @copyright Copyright (c) 2014-2015, Martin Pircher
 * @license http://opensource.org/licenses/BSD-3-Clause BSD-3-Clause
 **/

namespace mplx\skylablesx\Tests;

use
mplx\skylablesx\Sx;

/**
* Test SX authorization
*
* @link https://wiki.skylable.com/wiki/REST_API_Queries
*/
class AuthorizationTest extends \PHPUnit_Framework_TestCase
{
   
// content for PUT test
   
private $content = null;

   
// sx object
   
private $sx = null;

   
// rest request object
   
private $rest = null;

   
// setup up
   
public function setUp()
    {
       
// sx + request
       
$this->sx = new Sx('RcVxoVbdzvQTUacTvN3uW6fpVGBgIINMU1Zwqx2ob3aXJBy0Orb7kAAA', 'dummy.tld');
       
$this->rest = $this->sx->newRequest();
    }

   
// sx user key
   
public function testUserKey()
    {
       
$this->assertEquals(bin2hex($this->sx->getKey()), '6020834c535670ab1da86f7697241cb43ab6fb90');
    }

   
// setAuth: sx user key
   
public function testSetAuthGetKey()
    {
       
$this->sx->setAuth('RcVxoVbdzvQTUacTvN3uW6fpVGBgIINMU1Zwqx2ob3aXJBy0Orb7kAAA');
       
$this->assertEquals(bin2hex($this->sx->getKey()), '6020834c535670ab1da86f7697241cb43ab6fb90');
    }

   
// hmac sha1
   
public function testHmacSha1()
    {
       
$hmacsha1 = $this->rest->hmacSha1(
           
hex2bin('6020834c535670ab1da86f7697241cb43ab6fb90'),
           
"GET\n?nodeList\nThu, 10 Jul 2014 13:35:32 GMT\nda39a3ee5e6b4b0d3255bfef95601890afd80709\n"
       
);
       
$this->assertEquals($hmacsha1, '96f852a08d3ee255b77364a6bbd106be0dc0e44e');
    }

   
// sx signing key without empty body
   
public function testSignKey()
    {
       
$signkey = $this->rest->signRequest('GET', '?nodeList', 'Thu, 10 Jul 2014 13:35:32 GMT', sha1(''));
       
$this->assertEquals(
           
$signkey,
           
'45c571a156ddcef41351a713bcddee5ba7e9546096f852a08d3ee255b77364a6bbd106be0dc0e44e0000'
       
);
    }

   
// sx signing key with body
    // requires different sx auth than other samples
   
public function testSignKeyBody()
    {
       
$sx = new Sx('4Ac1+cEYNjMotLejE1X7p5v4yTWuUOu9apPie0AlvT1mkgzJtjFHzwAA', 'cluster.tld', 80);
       
$sx->setSSL(false);
       
$rest = $sx->newRequest();

       
$payload = '{"fileSize":15,"fileData":["0809ca51c30abd6da28993a7f690d78525c36ead"]}';
       
$signkey = $rest->signRequest(
           
'PUT',
           
'test/mplx/sx-php-test.txt',
           
'Tue, 24 Mar 2015 15:34:02 GMT',
           
sha1($payload)
        );

       
$this->assertEquals(
           
$signkey,
           
bin2hex(base64_decode('4Ac1+cEYNjMotLejE1X7p5v4yTVMj/xt5CKN2fTWkFr/esWe9Db0CQAA'))
        );
    }

   
// http authorization header
   
public function testAuthHeader()
    {
       
$header = $this->rest->createAuthHeader(
           
'45c571a156ddcef41351a713bcddee5ba7e9546096f852a08d3ee255b77364a6bbd106be0dc0e44e0000'
       
);
       
$this->assertEquals(
           
$header,
           
'Authorization: SKY RcVxoVbdzvQTUacTvN3uW6fpVGCW+FKgjT7iVbdzZKa70Qa+DcDkTgAA'
       
);
    }

   
// http date header
   
public function testDateheader()
    {
       
$header = $this->rest->createDateHeader('Thu, 10 Jul 2014 13:35:32 GMT');
       
$this->assertEquals($header, 'Date: Thu, 10 Jul 2014 13:35:32 GMT');
    }
}