/** * @cover Phaybox\Client::__construct() * @cover Phaybox\Client::getId() * @cover Phaybox\Client::getRang() * @cover Phaybox\Client::getSite() */ public function testConstructorBuildsClient() { // client id and rang should be assigned $this->assertEquals('abc', $this->client->getId()); $this->assertEquals('ghi', $this->client->getRang()); // client site should be assigned $this->assertEquals('https://example.com', $this->client->getSite()); // algorithm option should be equals to 'sha512' $this->assertEquals('sha512', $this->client->options['algorithm']); }
/** * Create an array with the required form fields * * @param array $opts Additional optional fields to include in the generated array * * @return array */ public function getFormattedParams() { // copy params var $params = $this->params; // create base array $fields = array('PBX_SITE' => $this->client->getSite(), 'PBX_RANG' => $this->client->getRang(), 'PBX_IDENTIFIANT' => $this->client->getId(), 'PBX_TOTAL' => $params['PBX_TOTAL'], 'PBX_DEVISE' => $params['PBX_DEVISE'], 'PBX_CMD' => $params['PBX_CMD'], 'PBX_PORTEUR' => $params['PBX_PORTEUR'], 'PBX_RETOUR' => $this->client->options['callback'], 'PBX_HASH' => strtoupper($this->client->options['algorithm']), 'PBX_TIME' => date(DATE_W3C)); // Unset setted params unset($params['PBX_TOTAL'], $params['PBX_DEVISE'], $params['PBX_CMD'], $params['PBX_PORTEUR']); // Merge remaining params $fields = array_merge($fields, $params); // generate signature from base array $fields['PBX_HMAC'] = strtoupper($this->generateSignature(http_build_query($fields))); return $fields; }
/** * @covers Phaybox\Transaction::generateSignature() * @covers Phaybox\Transaction::getFormattedParams() */ public function testFormattedParams() { $formattedParams = $this->transaction->getFormattedParams(); // PBX_ID, PBX_RANG, PBX_SITE, PBX_HASH, PBX_RETOUR should match client encapsuled data $this->assertEquals($this->client->getId(), $formattedParams['PBX_IDENTIFIANT']); $this->assertEquals($this->client->getRang(), $formattedParams['PBX_RANG']); $this->assertEquals($this->client->getSite(), $formattedParams['PBX_SITE']); $this->assertEquals(strtoupper($this->client->options['algorithm']), $formattedParams['PBX_HASH']); $this->assertEquals($this->client->options['callback'], $formattedParams['PBX_RETOUR']); // PBX_TOTAL, PBX_DEVISE, PBX_CMD, PBX_PORTEUR should match transaction params $this->assertEquals($this->transaction->getParam('PBX_TOTAL'), $formattedParams['PBX_TOTAL']); $this->assertEquals($this->transaction->getParam('PBX_DEVISE'), $formattedParams['PBX_DEVISE']); $this->assertEquals($this->transaction->getParam('PBX_CMD'), $formattedParams['PBX_CMD']); $this->assertEquals($this->transaction->getParam('PBX_PORTEUR'), $formattedParams['PBX_PORTEUR']); // PBX_TIME should be formatted as specified in ISO 8601 $this->assertISO8601($formattedParams['PBX_TIME']); // PBX_HMAC shouldn't be an empty string $this->assertNotEquals('', $formattedParams['PBX_HMAC']); }