Completed
Push — v2.0.x ( 11273c...f488cd )
by Florent
04:53 queued 01:28
created

NoneSignatureTest::testNoneSignAndVerifyComplete()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 15

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 26
rs 8.8571
cc 1
eloc 15
nc 1
nop 0
1
<?php
2
3
/*
4
 * The MIT License (MIT)
5
 *
6
 * Copyright (c) 2014-2016 Spomky-Labs
7
 *
8
 * This software may be modified and distributed under the terms
9
 * of the MIT license.  See the LICENSE file for details.
10
 */
11
12
use Jose\Algorithm\Signature\None;
13
use Jose\Factory\SignerFactory;
14
use Jose\Loader;
15
use Jose\Object\JWK;
16
use Jose\Test\TestCase;
17
18
/**
19
 * Class NoneSignatureTest.
20
 *
21
 * @group None
22
 */
23
class NoneSignatureTest extends TestCase
24
{
25
    /**
26
     *
27
     */
28
    public function testNoneSignAndVerifyAlgorithm()
29
    {
30
        $key = new JWK([
31
            'kty' => 'none',
32
        ]);
33
34
        $none = new None();
35
        $data = 'Je suis Charlie';
36
37
        $signature = $none->sign($key, $data);
38
39
        $this->assertEquals($signature, '');
40
        $this->assertTrue($none->verify($key, $data, $signature));
41
    }
42
43
    /**
44
     * @expectedException \InvalidArgumentException
45
     * @expectedExceptionMessage The key is not valid
46
     */
47
    public function testInvalidKey()
48
    {
49
        $key = new JWK([
50
            'kty' => 'EC',
51
        ]);
52
53
        $none = new None();
54
        $data = 'Je suis Charlie';
55
56
        $none->sign($key, $data);
57
    }
58
59
    /**
60
     *
61
     */
62
    public function testNoneSignAndVerifyComplete()
63
    {
64
        $jwk = new JWK([
65
            'kty' => 'none',
66
        ]);
67
68
        $signer = SignerFactory::createSigner(['none']);
69
70
        $jws = \Jose\Factory\JWSFactory::createJWS('Je suis Charlie');
71
72
        $signed = $signer->addSignature($jws, $jwk, ['alg' => 'none']);
73
74
        $this->assertEquals(1, $signed->countSignatures());
75
76
        $compact = $signed->toCompactJSON(0);
77
        $this->assertTrue(is_string($compact));
78
79
        $result = Loader::load($compact);
80
81
        $this->assertInstanceOf('Jose\Object\JWSInterface', $result);
82
83
        $this->assertEquals('Je suis Charlie', $result->getPayload());
84
        $this->assertEquals(1, $result->countSignatures());
85
        $this->assertTrue($result->getSignature(0)->hasProtectedHeader('alg'));
86
        $this->assertEquals('none', $result->getSignature(0)->getProtectedHeader('alg'));
87
    }
88
}
89