Passed
Push — master ( 2f478b...56a532 )
by Tim
02:08
created

PGPDataTest::setUpBeforeClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 8
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SimpleSAML\XMLSecurity\Test\XML\ds;
6
7
use PHPUnit\Framework\Attributes\CoversClass;
1 ignored issue
show
Bug introduced by
The type PHPUnit\Framework\Attributes\CoversClass was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
8
use PHPUnit\Framework\TestCase;
9
use SimpleSAML\XML\DOMDocumentFactory;
10
use SimpleSAML\XML\Exception\SchemaViolationException;
11
use SimpleSAML\XML\TestUtils\SchemaValidationTestTrait;
12
use SimpleSAML\XML\TestUtils\SerializableElementTestTrait;
13
use SimpleSAML\XMLSecurity\XML\ds\AbstractDsElement;
14
use SimpleSAML\XMLSecurity\XML\ds\AbstractPGPDataType;
15
use SimpleSAML\XMLSecurity\XML\ds\PGPData;
16
use SimpleSAML\XMLSecurity\XML\ds\PGPKeyID;
17
use SimpleSAML\XMLSecurity\XML\ds\PGPKeyPacket;
18
use SimpleSAML\XMLSecurity\XML\xenc\P;
19
20
use function dirname;
21
use function strval;
22
23
/**
24
 * Class \SimpleSAML\XMLSecurity\Test\XML\ds\PGPDataTest
25
 *
26
 * @package simplesamlphp/xml-security
27
 */
28
#[CoversClass(AbstractDsElement::class)]
29
#[CoversClass(AbstractPGPDataType::class)]
30
#[CoversClass(PGPData::class)]
31
final class PGPDataTest extends TestCase
32
{
33
    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\PGPDataTest: $documentElement, $ownerDocument, $message, $line
Loading history...
34
    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\PGPDataTest.
Loading history...
35
36
    /**
37
     */
38
    public static function setUpBeforeClass(): void
39
    {
40
        self::$testedClass = PGPData::class;
41
42
        self::$schemaFile = dirname(__FILE__, 4) . '/resources/schemas/xmldsig1-schema.xsd';
43
44
        self::$xmlRepresentation = DOMDocumentFactory::fromFile(
45
            dirname(__FILE__, 3) . '/resources/xml/ds_PGPData.xml',
46
        );
47
    }
48
49
50
    /**
51
     */
52
    public function testMarshalling(): void
53
    {
54
        $pgpKeyId = new PGPKeyID('GpM7');
55
        $pgpKeyPacket = new PGPKeyPacket('GpM8');
56
        $p = new P('/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=');
57
58
        $pgpData = new PGPData($pgpKeyId, $pgpKeyPacket, [$p]);
59
60
        $this->assertEquals(
61
            self::$xmlRepresentation->saveXML(self::$xmlRepresentation->documentElement),
62
            strval($pgpData),
63
        );
64
    }
65
66
67
    /**
68
     */
69
    public function testMarshallingBothIdAndPacketNullThrowsException(): void
70
    {
71
        $this->expectException(SchemaViolationException::class);
72
73
        new PGPData(null, null, []);
74
    }
75
76
77
    /**
78
     */
79
    public function testMarshallingReferenceElementOrdering(): void
80
    {
81
        $pgpKeyId = new PGPKeyID('GpM7');
82
        $pgpKeyPacket = new PGPKeyPacket('GpM8');
83
        $p = new P('/CTj03d1DB5e2t7CTo9BEzCf5S9NRzwnBgZRlm32REI=');
84
85
        $pgpData = new PGPData($pgpKeyId, $pgpKeyPacket, [$p]);
86
87
        $pgpDataElement = $pgpData->toXML();
88
        /** @var \DOMElement[] $children */
89
        $children = $pgpDataElement->childNodes;
90
91
        $this->assertEquals('ds:PGPKeyID', $children[0]->tagName);
92
        $this->assertEquals('ds:PGPKeyPacket', $children[1]->tagName);
93
        $this->assertEquals('xenc:P', $children[2]->tagName);
94
    }
95
}
96