PHP Classes

File: test/lib/Providers/TADSoapTest.php

Recommend this page to a friend!
  Classes of Jorge Cobis   TAD   test/lib/Providers/TADSoapTest.php   Download  
File: test/lib/Providers/TADSoapTest.php
Role: Unit test script
Content type: text/plain
Description: part of test suite
Class: TAD
Communicate with ZK time and attendance devices
Author: By
Last change: Update of test/lib/Providers/TADSoapTest.php
Date: 11 months ago
Size: 5,712 bytes
 

Contents

Class file image Download
<?php
namespace Test\Providers;

use
TADPHP\TAD;
use
TADPHP\Providers\TADSoap;
use
Test\Helpers\ClassReflection;


class
TADSoapTest extends \PHPUnit_Framework_TestCase
{
  public function
testBuildTADSoap()
  {
   
$soap_options = $this->get_soap_options();

   
$soap_client = new \SoapClient( null, $soap_options );
   
$tad_soap = new TADSoap($soap_client, $soap_options);

   
$this->assertNotNull($tad_soap);
   
$this->assertInstanceOf('TADPHP\Providers\TADSoap', $tad_soap);

    return
$tad_soap;
  }

 
/**
   * @depends testBuildTADSoap
   */
 
public function testGetSoapProviderOptions($tad_soap_instance)
  {
   
$soap_providers_options = $tad_soap_instance->get_soap_provider_options();

   
$this->assertInternalType('array', $soap_providers_options);
   
$this->assertArrayHasKey('location', $soap_providers_options);
   
$this->assertArrayHasKey('uri', $soap_providers_options);
   
$this->assertEquals('http://127.0.0.1/iWsService', $soap_providers_options['location']);
   
$this->assertEquals('http://www.zksoftware/Service/message/', $soap_providers_options['uri']);
  }

 
/**
   * @depends testBuildTADSoap
   * @dataProvider soapCommandsFixtures
   */
 
public function testBuildSoapRequest($command, array $args, $expected_soap_string, $encoding, TADSoap $tad_soap)
  {
   
$args += array_fill_keys( TAD::get_valid_commands_args(), null );
   
$soap_request = $tad_soap->build_soap_request( $command, $args, $encoding );

   
$this->assertEquals( $expected_soap_string, $soap_request );
  }

 
/**
   * @depends testBuildTADSoap
   */
 
public function testBuildMultipleSoapRequest(TADSoap $tad_soap)
  {
   
$args = array_fill_keys( TAD::get_valid_commands_args(), null );

   
// We uses 'set_user_info' command defined in TADSoap class.
    // Maybe there is a better way to test this. :-P
   
$soap_request = $tad_soap->build_soap_request('set_user_info', $args, 'iso8859-1');

   
$this->assertInternalType('array', $soap_request);
  }

  public function
testExecuteSoapRequest()
  {
   
$mock_response = '<GetUserInfoResponse></GetUserInfoResponse>';
   
$encoding = 'iso8859-1';

   
$soap_options = $this->get_soap_options();

   
$soap_client = $this->getMockBuilder('\SoapClient')
      ->
setConstructorArgs( [ null, [ 'location'=>$soap_options['location'], 'uri'=>$soap_options['uri'] ] ] )
      ->
setMethods( [ '__doRequest' ] )
      ->
getMock();

   
$soap_client->expects( $this->any() )
      ->
method( '__doRequest' )
      ->
with( $this->anything(), $soap_options['location'], '', SOAP_1_1 )
      ->
will( $this->returnValue( $mock_response ) );

   
$tad_soap = $this->getMockBuilder('TADPHP\Providers\TADSoap')
      ->
setConstructorArgs( [ $soap_client, $soap_options ] )
      ->
setMethods( null )
      ->
getMock();

   
$args = array_fill_keys( TAD::get_valid_commands_args(), null );
   
$args['com_key'] = 0;
   
$args['pin'] = 123;

   
$response = $tad_soap->execute_soap_command( 'get_user_info', $args, $encoding );

   
$this->assertNotEmpty( $response );
  }

  public function
testExecuteMultipleSoapRequests()
  {
   
$soap_requests = [
       
'<GetDate><ArgComKey>0</ArgComKey></GetDate>',
       
'<Restart><ArgComKey>0</ArgComKey></Restart>'
   
];

   
$mock_response = '<RestartResponse><Row><Result>1</Result><Information>Success!</Information></Row></RestartResponse>';

   
$soap_options = $this->get_soap_options();

   
$soap_client = $this->getMockBuilder('\SoapClient')
      ->
setConstructorArgs( [ null, [ 'location'=>$soap_options['location'], 'uri'=>$soap_options['uri'] ] ] )
      ->
setMethods( [ '__doRequest' ] )
      ->
getMock();

   
$soap_client->expects( $this->any() )
      ->
method( '__doRequest' )
      ->
with( $this->anything(), $soap_options['location'], '', SOAP_1_1 )
      ->
will( $this->returnValue( $mock_response ) );

   
$tad_soap = $this->getMockBuilder('TADPHP\Providers\TADSoap')
      ->
setConstructorArgs( [ $soap_client, $soap_options ] )
      ->
setMethods( null )
      ->
getMock();


   
$result = ClassReflection::invoke_method(
           
$tad_soap,
           
'execute_multiple_soap_requests',
            [
$soap_requests, $soap_options['location'] ] );

   
$this->assertNotEmpty( $result );
  }


  public function
soapCommandsFixtures()
  {
   
$encoding = 'iso8859-1';

    return [
      [
'get_date', ['com_key'=>0], '<?xml version="1.0" encoding="'. $encoding .'" standalone="no"?><GetDate><ArgComKey>0</ArgComKey></GetDate>', $encoding ],
      [
'get_att_log', ['com_key'=>0], '<?xml version="1.0" encoding="' . $encoding. '" standalone="no"?><GetAttLog><ArgComKey>0</ArgComKey><Arg><PIN></PIN></Arg></GetAttLog>', $encoding ],
      [
'get_att_log', ['com_key'=>0, 'pin'=>'99999999'], '<?xml version="1.0" encoding="' . $encoding . '" standalone="no"?><GetAttLog><ArgComKey>0</ArgComKey><Arg><PIN>99999999</PIN></Arg></GetAttLog>', $encoding ],
      [
'set_user_template', [
             
'com_key' => 0,
             
'pin' => '999',
             
'finger_id' => '0',
             
'size' => '514',
             
'valid' => '1',
             
'template' => 'foobartaz123'
           
],
         
'<?xml version="1.0" encoding="' . $encoding . '" standalone="no"?><SetUserTemplate><ArgComKey>0</ArgComKey><Arg><PIN>999</PIN><FingerID>0</FingerID><Size>514</Size><Valid>1</Valid><Template>foobartaz123</Template></Arg></SetUserTemplate>',
         
$encoding
     
]
    ];
  }

  private function
get_soap_options()
  {
   
$soap_options = [
       
'location' => "http://127.0.0.1/iWsService",
       
'uri' => 'http://www.zksoftware/Service/message/',
       
'connection_timeout' => 1,
       
'exceptions' => false,
       
'trace' => true
   
];

    return
$soap_options;
  }
}