<?php

namespace Tests\Unit\HttpSignatures;

use App\Util\HttpSignatures\SignatureParametersParser;

class SignatureParametersParserTest extends \PHPUnit\Framework\TestCase
{
    public function testParseReturnsExpectedAssociativeArray()
    {
        $parser = new SignatureParametersParser(
            'keyId="example",algorithm="hmac-sha1",headers="(request-target) date",signature="b64"'
        );
        $this->assertEquals(
            [
                'keyId' => 'example',
                'algorithm' => 'hmac-sha1',
                'headers' => '(request-target) date',
                'signature' => 'b64',
            ],
            $parser->parse()
        );
    }

    /**
     * @expectedException App\Util\HttpSignatures\SignatureParseException
     */
    public function testParseThrowsTypedException()
    {
        $parser = new SignatureParametersParser('nope');
        $parser->parse();
    }

    /**
     * @expectedException App\Util\HttpSignatures\SignatureParseException
     */
    public function testParseExceptionForMissingComponents()
    {
        $parser = new SignatureParametersParser(
            'keyId="example",algorithm="hmac-sha1",headers="(request-target) date"'
        );
        $parser->parse();
    }
}