Passed
Push — master ( 5a07d0...30f015 )
by Tim
23:49 queued 11:01
created

X509IssuerSerialTest::testUnmarshalling()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
c 2
b 0
f 0
nc 1
nop 0
dl 0
loc 7
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SimpleSAML\XMLSecurity\Test\XML\ds;
6
7
use DOMDocument;
8
use PHPUnit\Framework\TestCase;
9
use SimpleSAML\XML\DOMDocumentFactory;
10
use SimpleSAML\XML\TestUtils\SerializableElementTestTrait;
11
use SimpleSAML\XMLSecurity\CryptoEncoding\PEM;
12
use SimpleSAML\XMLSecurity\Key;
13
use SimpleSAML\XMLSecurity\Utils\Certificate as CertificateUtils;
14
use SimpleSAML\XMLSecurity\TestUtils\PEMCertificatesMock;
15
use SimpleSAML\XMLSecurity\Utils\XPath;
16
use SimpleSAML\XMLSecurity\XML\ds\X509IssuerSerial;
17
use SimpleSAML\XMLSecurity\XML\ds\X509IssuerName;
18
use SimpleSAML\XMLSecurity\XML\ds\X509SerialNumber;
19
20
use function dirname;
21
use function strval;
22
23
/**
24
 * Class \SimpleSAML\XMLSecurity\XML\ds\X509IssuerSerial
25
 *
26
 * @covers \SimpleSAML\XMLSecurity\XML\ds\AbstractDsElement
27
 * @covers \SimpleSAML\XMLSecurity\XML\ds\X509IssuerSerial
28
 *
29
 * @package simplesamlphp/xml-security
30
 */
31
final class X509IssuerSerialTest extends TestCase
32
{
33
    use SerializableElementTestTrait;
0 ignored issues
show
Bug introduced by
The trait SimpleSAML\XML\TestUtils...lizableElementTestTrait requires the property $documentElement which is not provided by SimpleSAML\XMLSecurity\T...ds\X509IssuerSerialTest.
Loading history...
34
35
    /** @var \SimpleSAML\XMLSecurity\Key\X509Certificate */
36
    private static Key\X509Certificate $key;
37
38
    /** @var \SimpleSAML\XMLSecurity\XML\ds\X509IssuerName */
39
    private static X509IssuerName $issuer;
40
41
    /** @var \SimpleSAML\XMLSecurity\XML\ds\X509SerialNumber */
42
    private static X509SerialNumber $serial;
43
44
45
    /**
46
     */
47
    public function setUp(): void
48
    {
49
        self::$testedClass = X509IssuerSerial::class;
50
51
        self::$xmlRepresentation = DOMDocumentFactory::fromFile(
52
            dirname(__FILE__, 3) . '/resources/xml/ds_X509IssuerSerial.xml',
53
        );
54
55
        self::$key = new Key\X509Certificate(PEM::fromString(PEMCertificatesMock::getPlainCertificate()));
56
57
        $details = self::$key->getCertificateDetails();
58
        self::$issuer = new X509IssuerName(CertificateUtils::parseIssuer($details['issuer']));
59
        self::$serial = new X509SerialNumber($details['serialNumber']);
60
    }
61
62
63
    /**
64
     */
65
    public function testMarshalling(): void
66
    {
67
        $X509IssuerSerial = new X509IssuerSerial(self::$issuer, self::$serial);
68
69
        $this->assertEquals(
70
            self::$xmlRepresentation->saveXML(self::$xmlRepresentation->documentElement),
71
            strval($X509IssuerSerial),
72
        );
73
    }
74
75
76
    /**
77
     */
78
    public function testMarshallingElementOrdering(): void
79
    {
80
        $X509IssuerSerial = new X509IssuerSerial(self::$issuer, self::$serial);
81
        $X509IssuerSerialElement = $X509IssuerSerial->toXML();
82
83
        $xpCache = XPath::getXPath($X509IssuerSerialElement);
84
85
        $issuerName = XPath::xpQuery($X509IssuerSerialElement, './ds:X509IssuerName', $xpCache);
86
        $this->assertCount(1, $issuerName);
87
88
        /** @psalm-var \DOMElement[] $X509IssuerSerialElements */
89
        $X509IssuerSerialElements = XPath::xpQuery(
90
            $X509IssuerSerialElement,
91
            './ds:X509IssuerName/following-sibling::*',
92
            $xpCache,
93
        );
94
95
        // Test ordering of X509IssuerSerial contents
96
        $this->assertCount(1, $X509IssuerSerialElements);
97
        $this->assertEquals('ds:X509SerialNumber', $X509IssuerSerialElements[0]->tagName);
98
    }
99
}
100