Passed
Branch master (c86cc6)
by Tim
03:54
created

ReferenceTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 81
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 36
dl 0
loc 81
rs 10
c 0
b 0
f 0
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testUnmarshalling() 0 7 1
A setUpBeforeClass() 0 8 1
A testMarshallingReferenceElementOrdering() 0 23 1
A testMarshalling() 0 19 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SimpleSAML\XMLSecurity\Test\XML\ds;
6
7
use PHPUnit\Framework\TestCase;
8
use SimpleSAML\XML\DOMDocumentFactory;
9
use SimpleSAML\XML\TestUtils\SchemaValidationTestTrait;
10
use SimpleSAML\XML\TestUtils\SerializableElementTestTrait;
11
use SimpleSAML\XMLSecurity\Constants as C;
12
use SimpleSAML\XMLSecurity\XML\ds\DigestMethod;
13
use SimpleSAML\XMLSecurity\XML\ds\DigestValue;
14
use SimpleSAML\XMLSecurity\XML\ds\Reference;
15
use SimpleSAML\XMLSecurity\XML\ds\Transform;
16
use SimpleSAML\XMLSecurity\XML\ds\Transforms;
17
18
use function dirname;
19
use function strval;
20
21
/**
22
 * Class \SimpleSAML\XMLSecurity\Test\XML\ds\ReferenceTest
23
 *
24
 * @covers \SimpleSAML\XMLSecurity\XML\ds\Reference
25
 * @covers \SimpleSAML\XMLSecurity\XML\ds\AbstractDsElement
26
 *
27
 * @package simplesamlphp/saml2
28
 */
29
final class ReferenceTest extends TestCase
30
{
31
    use SchemaValidationTestTrait;
0 ignored issues
show
introduced by
The trait SimpleSAML\XML\TestUtils\SchemaValidationTestTrait requires some properties which are not provided by SimpleSAML\XMLSecurity\Test\XML\ds\ReferenceTest: $documentElement, $ownerDocument, $message, $line
Loading history...
32
    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\Test\XML\ds\ReferenceTest.
Loading history...
33
34
    /**
35
     */
36
    public static function setUpBeforeClass(): void
37
    {
38
        self::$testedClass = Reference::class;
39
40
        self::$schemaFile = dirname(__FILE__, 4) . '/resources/schemas/xmldsig1-schema.xsd';
41
42
        self::$xmlRepresentation = DOMDocumentFactory::fromFile(
43
            dirname(__FILE__, 3) . '/resources/xml/ds_Reference.xml',
44
        );
45
    }
46
47
48
    /**
49
     */
50
    public function testMarshalling(): void
51
    {
52
        $reference = new Reference(
53
            new DigestMethod(C::DIGEST_SHA256),
54
            new DigestValue('/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI='),
55
            new Transforms(
56
                [
57
                    new Transform(C::XMLDSIG_ENVELOPED),
58
                    new Transform(C::C14N_EXCLUSIVE_WITHOUT_COMMENTS),
59
                ],
60
            ),
61
            'ghi789',
62
            'urn:some:type',
63
            '#_1e280ee704fb1d8d9dec4bd6c1889ec96942921153',
64
        );
65
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
101
    /**
102
     */
103
    public function testUnmarshalling(): void
104
    {
105
        $reference = Reference::fromXML(self::$xmlRepresentation->documentElement);
106
107
        $this->assertEquals(
108
            self::$xmlRepresentation->saveXML(self::$xmlRepresentation->documentElement),
109
            strval($reference),
110
        );
111
    }
112
}
113