| 
<?phpdeclare(strict_types=1);
 namespace ParagonIE\Quill\Tests;
 
 use ParagonIE\Quill\Quill;
 use PHPUnit\Framework\TestCase;
 use ParagonIE\Sapient\CryptographyKeys\{
 SigningPublicKey,
 SigningSecretKey
 };
 
 /**
 * Class QuillTest
 */
 class QuillTest extends TestCase
 {
 /**
 * @covers Quill::__construct()
 * @covers Quill::getClientSecretKey()
 * @covers Quill::getClientID()
 * @covers Quill::getChronicleURL()
 * @covers Quill::getServerPublicKey()
 */
 public function testDefaultValues()
 {
 $quill = new Quill(
 '',
 '',
 null,
 null,
 new \GuzzleHttp\Client()
 );
 $this->assertSame('', $quill->getChronicleURL());
 $this->assertSame('', $quill->getClientID());
 try {
 $quill->getClientSecretKey();
 $this->fail('A TypeError should have bene thrown');
 } catch (\TypeError $ex) {
 }
 
 try {
 $quill->getServerPublicKey();
 $this->fail('A TypeError should have bene thrown');
 } catch (\TypeError $ex) {
 }
 }
 
 /**
 * @covers Quill::getClientSecretKey()
 * @covers Quill::getClientID()
 * @covers Quill::getChronicleURL()
 * @covers Quill::getServerPublicKey()
 * @covers Quill::setClientSecretKey()
 * @covers Quill::etClientID()
 * @covers Quill::setChronicleURL()
 * @covers Quill::setServerPublicKey()
 */
 public function testGetSet()
 {
 $quill = new Quill(
 '',
 '',
 null,
 null,
 new \GuzzleHttp\Client()
 );
 
 $sign_keypair = sodium_crypto_sign_keypair();
 $signingSecretKey = new SigningSecretKey(
 sodium_crypto_sign_secretkey($sign_keypair)
 );
 $signingPublicKey = new SigningPublicKey(
 sodium_crypto_sign_publickey($sign_keypair)
 );
 
 $clientID = bin2hex(random_bytes(32));
 $quill->setClientID($clientID);
 $this->assertSame($clientID, $quill->getClientID());
 
 $url = 'https://' . bin2hex(random_bytes(32)) . '.example.com/chronicle';
 $quill->setChronicleURL($url);
 $this->assertSame($url, $quill->getChronicleURL());
 
 $quill->setServerPublicKey($signingPublicKey);
 $this->assertSame($signingPublicKey->getString(), $quill->getServerPublicKey()->getString());
 
 $quill->setClientSecretKey($signingSecretKey);
 $this->assertSame($signingSecretKey->getString(), $quill->getClientSecretKey()->getString());
 }
 }
 
 |