Completed
Push — master ( ff92f6...3ef1d3 )
by John
09:08
created

RsaValidatorTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 100
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 2

Importance

Changes 0
Metric Value
wmc 2
lcom 2
cbo 2
dl 0
loc 100
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A willPassTestDataSetUsingSha256() 0 5 1
B testSetProvider() 0 35 1
1
<?php
2
/*
3
 * This file is part of the KleijnWeb\JwtBundle package.
4
 *
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 */
8
9
namespace KleijnWeb\JwtBundle\Tests\Jwt\SignatureValidator;
10
11
use KleijnWeb\JwtBundle\Jwt\SignatureValidator\RsaValidator;
12
13
/**
14
 * @author John Kleijn <[email protected]>
15
 */
16
class RsaValidatorTest extends \PHPUnit_Framework_TestCase
17
{
18
    /**
19
     * @var string
20
     */
21
    private static $pubKey = '-----BEGIN PUBLIC KEY-----
22
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwND1VMVJ3BC/aM38tQRH
23
2GDHecXE8EsGoeAeBR5dFt3QC1/Eoub/F2kee3RBtI6I+kDBjrSDz5lsqh3Sm7N/
24
47fTKZLvdBaHbCuYXVBQ2tZeEiUBESnsY2HUzXDlqSyDWohuiYeeL6gewxe1CnSE
25
0l8gYZ0Tx4ViPFYulva6siew0f4tBuSEwSPiKZQnGcssQYJ/VevTD6L4wGoDhkXV
26
VvJ+qiNgmXXssgCl5vHs22y/RIgeOnDhkj81aB9Evx9iR7DOtyRBxnovrbN5gDwX
27
m6IDw3fRhZQrVwZ816/eN+1sqpIMZF4oo4kRA4b64U04ex67A/6BwDDQ3LH0mD4d
28
EwIDAQAB
29
-----END PUBLIC KEY-----';
30
    /**
31
     * @var string
32
     */
33
    private static $privKey = '-----BEGIN RSA PRIVATE KEY-----
34
MIIEowIBAAKCAQEAwND1VMVJ3BC/aM38tQRH2GDHecXE8EsGoeAeBR5dFt3QC1/E
35
oub/F2kee3RBtI6I+kDBjrSDz5lsqh3Sm7N/47fTKZLvdBaHbCuYXVBQ2tZeEiUB
36
ESnsY2HUzXDlqSyDWohuiYeeL6gewxe1CnSE0l8gYZ0Tx4ViPFYulva6siew0f4t
37
BuSEwSPiKZQnGcssQYJ/VevTD6L4wGoDhkXVVvJ+qiNgmXXssgCl5vHs22y/RIge
38
OnDhkj81aB9Evx9iR7DOtyRBxnovrbN5gDwXm6IDw3fRhZQrVwZ816/eN+1sqpIM
39
ZF4oo4kRA4b64U04ex67A/6BwDDQ3LH0mD4dEwIDAQABAoIBAEej2+NZQi4P0u5/
40
ymr/YipVGwh1oMyfM6GlgcHpHDFIzOnM9WSJazIpjnfUJC2P3/kLYl9BVtAlcyhp
41
2DydnuDfBggmXe3GCR75u6zAEKqeh2k6coEMEJaEXOrQDaSjs1JJ6rgSuYV/c56N
42
CmkODeOUEJX0JMs3Fd7RLpJMreVPD0XjNFIPqKrkkpG4rxteHjtbxfLJlHhVRcSf
43
IESZ2MdQczLosjsyiv9b/8kp4y4bAR33BaedLxJvxer8qXVKgzw9YHJhWVojFoDx
44
GwxMR2Eh2hUEAlwifKv84P5GgYdQ0CPHMe06fR+fq/B75dqF/Emlks6f1hoTVEJc
45
RvXVy7ECgYEA/zUEHdhegUTrFMfvfUrqw+Uolj+GH10yM5EQqYGAiEsNOv+pcR0+
46
DoNawt1Ddrj4LuvM9s26O26yX99UyleiHphPAOdXUiU7taIWIIcllY+oA9ZajhG8
47
ufZmCfydeVi+/EjpIrEU3F7q0GXisZ8oMIfg+HG8Z2+uy/+m7k6RCT8CgYEAwWpR
48
hzW2/4bDpa4P5AfN0wN+CqlGEIfim5MBk608QWgQTPIIADk9dX3IML2BVaX/Eyod
49
CYn+reF0UDIyaI2XCZ9ab/jeKOQVUh2IksK4T9H41JokWyXoYcVJSF6kIdHOCY4D
50
GXfx0ruJa2dKGWBMcpSUndXqVGmDvVrcdSOsQy0CgYEA/V19AMRWzq/FU5RLR3Ch
51
MmrHqKLYXTsBJADZMe/H04fvUquPZSVK/s2Zxew1liB9BNhFXKFSSr7TiCsI2vm1
52
kfpUNOl3363nYaPRo+mIfrtoaqbcsD8bxuPA2hlZnadltMIN8ssrkr0JEmyUaxM/
53
qy67Quxnx6kxOIZPDDgj9bECgYBB/JraDVpkrT6cjNkBDCSNhFiBHKU5yJJoT2wv
54
TOAM1IsTJVPTd7PfHM2qy0yPwvVWPXzwnzLTceKz5ZxLDVtlPgelwftRahdYD5lj
55
sKkfGlzRc9FJg5JXoO5SkW9f1mt72QZ3rvNC2RaWHQQryi3qvYRCoRO0PtdiR9iE
56
4mnH9QKBgERffegJiuqdPyAeBZ+5htJ9pdfXjVTgFGuEvhmTR/mrpwqjihLg8IXV
57
whXkXaMi77FKD9StGrlBOQD6CgUVt/DkiZyGDRX0YkTj78X+hjsrgNdIr8c0TrtQ
58
gen9FW5mEhj257ZHej/AQrJWFo7YVooBL7ShwU0WaReeQkncxAsY
59
-----END RSA PRIVATE KEY-----
60
';
61
62
    /**
63
     * @param string $type
64
     * @param string $expected
65
     * @param string $payload
66
     * @param string $signature
67
     *
68
     * @test
69
     * @dataProvider testSetProvider
70
     */
71
    public function willPassTestDataSetUsingSha256($type, $expected, $payload, $signature)
72
    {
73
        $validator = new RsaValidator($type);
74
        $this->assertSame($expected, $validator->isValid($payload, self::$pubKey, $signature));
75
    }
76
77
    /**
78
     * @return array
79
     */
80
    public static function testSetProvider()
81
    {
82
        // SHA256
83
84
        $payload1 = 'some payload';
85
        $signature1 = '';
86
        openssl_sign($payload1, $signature1, self::$privKey, RsaValidator::SHA256);
87
88
        $payload2 = 'some other payload';
89
        $signature2 = '';
90
        openssl_sign($payload2, $signature2, self::$privKey, RsaValidator::SHA256);
91
92
        // SHA512
93
94
        $payload3 = 'some payload';
95
        $signature3 = '';
96
        openssl_sign($payload3, $signature3, self::$privKey, RsaValidator::SHA512);
97
98
        $payload4 = 'some other payload';
99
        $signature4 = '';
100
        openssl_sign($payload4, $signature4, self::$privKey, RsaValidator::SHA512);
101
102
        return [
103
            [RsaValidator::SHA256, true, $payload1, $signature1],
104
            [RsaValidator::SHA256, true, $payload2, $signature2],
105
            [RsaValidator::SHA256, false, $payload1, $signature2],
106
            [RsaValidator::SHA256, false, $payload2, $signature1],
107
            [RsaValidator::SHA512, true, $payload3, $signature3],
108
            [RsaValidator::SHA512, true, $payload4, $signature4],
109
            [RsaValidator::SHA512, false, $signature4, $signature3],
110
            [RsaValidator::SHA512, false, $signature3, $signature4],
111
            [RsaValidator::SHA512, false, $payload1, $signature1],
112
            [RsaValidator::SHA512, false, $payload2, $signature2],
113
        ];
114
    }
115
}
116