Passed
Pull Request — master (#61)
by
unknown
12:50
created

ReferenceTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 32
c 1
b 0
f 0
dl 0
loc 70
rs 10
wmc 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SimpleSAML\XMLSecurity\Test\XML\ds;
6
7
use PHPUnit\Framework\Attributes\CoversClass;
8
use PHPUnit\Framework\TestCase;
9
use SimpleSAML\XML\DOMDocumentFactory;
10
use SimpleSAML\XML\TestUtils\SchemaValidationTestTrait;
11
use SimpleSAML\XML\TestUtils\SerializableElementTestTrait;
12
use SimpleSAML\XMLSecurity\Constants as C;
13
use SimpleSAML\XMLSecurity\XML\ds\AbstractDsElement;
14
use SimpleSAML\XMLSecurity\XML\ds\DigestMethod;
15
use SimpleSAML\XMLSecurity\XML\ds\DigestValue;
16
use SimpleSAML\XMLSecurity\XML\ds\Reference;
17
use SimpleSAML\XMLSecurity\XML\ds\Transform;
18
use SimpleSAML\XMLSecurity\XML\ds\Transforms;
19
20
use function dirname;
21
use function strval;
22
23
/**
24
 * Class \SimpleSAML\XMLSecurity\Test\XML\ds\ReferenceTest
25
 *
26
 * @package simplesamlphp/saml2
27
 */
28
#[CoversClass(AbstractDsElement::class)]
29
#[CoversClass(Reference::class)]
30
final class ReferenceTest extends TestCase
31
{
32
    use SchemaValidationTestTrait;
33
    use SerializableElementTestTrait;
34
35
    /**
36
     */
37
    public static function setUpBeforeClass(): void
38
    {
39
        self::$testedClass = Reference::class;
40
41
        self::$xmlRepresentation = DOMDocumentFactory::fromFile(
42
            dirname(__FILE__, 3) . '/resources/xml/ds_Reference.xml',
43
        );
44
    }
45
46
47
    /**
48
     */
49
    public function testMarshalling(): void
50
    {
51
        $reference = new Reference(
52
            new DigestMethod(C::DIGEST_SHA256),
53
            new DigestValue('/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI='),
54
            new Transforms(
55
                [
56
                    new Transform(C::XMLDSIG_ENVELOPED),
57
                    new Transform(C::C14N_EXCLUSIVE_WITHOUT_COMMENTS),
58
                ],
59
            ),
60
            'ghi789',
61
            'urn:some:type',
62
            '#_1e280ee704fb1d8d9dec4bd6c1889ec96942921153',
63
        );
64
65
        $this->assertFalse($reference->isXPointer());
66
        $this->assertEquals(
67
            self::$xmlRepresentation->saveXML(self::$xmlRepresentation->documentElement),
68
            strval($reference),
69
        );
70
    }
71
72
73
    /**
74
     */
75
    public function testMarshallingReferenceElementOrdering(): void
76
    {
77
        $reference = new Reference(
78
            new DigestMethod(C::DIGEST_SHA256),
79
            new DigestValue('/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI='),
80
            new Transforms(
81
                [
82
                    new Transform(C::XMLDSIG_ENVELOPED),
83
                    new Transform(C::C14N_EXCLUSIVE_WITHOUT_COMMENTS),
84
                ],
85
            ),
86
            'ghi789',
87
            'urn:some:type',
88
            '#_1e280ee704fb1d8d9dec4bd6c1889ec96942921153',
89
        );
90
91
        $referenceElement = $reference->toXML();
92
        /** @var \DOMElement[] $children */
93
        $children = $referenceElement->childNodes;
94
95
        $this->assertEquals('ds:Transforms', $children[0]->tagName);
96
        $this->assertEquals('ds:DigestMethod', $children[1]->tagName);
97
        $this->assertEquals('ds:DigestValue', $children[2]->tagName);
98
    }
99
}
100