Skip to content

Commit 39fb4a6

Browse files
committed
Add IntegerElementTrait
1 parent 3ace522 commit 39fb4a6

File tree

5 files changed

+122
-1
lines changed

5 files changed

+122
-1
lines changed

src/Base64ElementTrait.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use DOMElement;
88
use SimpleSAML\Assert\Assert;
99
use SimpleSAML\XML\Exception\SchemaViolationException;
10-
use SimpleSAML\XML\StringElementTrait;
1110

1211
use function str_replace;
1312

src/IntegerElementTrait.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace SimpleSAML\XML;
6+
7+
use SimpleSAML\Assert\Assert;
8+
use SimpleSAML\XML\Exception\SchemaViolationException;
9+
10+
/**
11+
* Trait grouping common functionality for simple elements with just some textContent
12+
*
13+
* @package simplesamlphp/xml-common
14+
*/
15+
trait IntegerElementTrait
16+
{
17+
use StringElementTrait;
18+
19+
20+
/**
21+
* Validate the content of the element.
22+
*
23+
* @param int $content The value to go in the XML textContent
24+
* @throws \Exception on failure
25+
* @return void
26+
*/
27+
protected function validateContent(/** @scrutinizer ignore-unused */ string $content): void
28+
{
29+
/**
30+
* Perform no validation by default.
31+
* Override this method on the implementing class to perform content validation.
32+
*/
33+
Assert::numeric($content, SchemaViolationException::class);
34+
}
35+
}

tests/Utils/IntegerElement.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace SimpleSAML\Test\XML;
6+
7+
use SimpleSAML\XML\AbstractElement;
8+
use SimpleSAML\XML\IntegerElementTrait;
9+
10+
/**
11+
* Empty shell class for testing Integer elements.
12+
*
13+
* @package simplesaml/xml-common
14+
*/
15+
final class IntegerElement extends AbstractElement
16+
{
17+
use IntegerElementTrait;
18+
19+
/** @var string */
20+
public const NS = 'urn:x-simplesamlphp:namespace';
21+
22+
/** @var string */
23+
public const NS_PREFIX = 'ssp';
24+
25+
26+
/**
27+
* @param string $content
28+
*/
29+
public function __construct(string $content)
30+
{
31+
$this->setContent($content);
32+
}
33+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace SimpleSAML\Test\XML;
6+
7+
use PHPUnit\Framework\Attributes\CoversClass;
8+
use PHPUnit\Framework\TestCase;
9+
use SimpleSAML\Test\XML\IntegerElement;
10+
use SimpleSAML\XML\AbstractElement;
11+
use SimpleSAML\XML\DOMDocumentFactory;
12+
use SimpleSAML\XML\IntegerElementTrait;
13+
use SimpleSAML\XML\TestUtils\SerializableElementTestTrait;
14+
15+
use function dirname;
16+
use function strval;
17+
18+
/**
19+
* Class \SimpleSAML\XML\IntegerElementTraitTest
20+
*
21+
* @package simplesamlphp\xml-common
22+
*/
23+
#[CoversClass(SerializableElementTestTrait::class)]
24+
#[CoversClass(IntegerElementTrait::class)]
25+
#[CoversClass(AbstractElement::class)]
26+
final class IntegerElementTraitTest extends TestCase
27+
{
28+
use SerializableElementTestTrait;
29+
30+
31+
/**
32+
*/
33+
public static function setUpBeforeClass(): void
34+
{
35+
self::$testedClass = IntegerElement::class;
36+
37+
self::$xmlRepresentation = DOMDocumentFactory::fromFile(
38+
dirname(__FILE__, 2) . '/resources/xml/ssp_IntegerElement.xml',
39+
);
40+
}
41+
42+
/**
43+
*/
44+
public function testMarshalling(): void
45+
{
46+
$integerElement = new IntegerElement('-001');
47+
48+
$this->assertEquals(
49+
self::$xmlRepresentation->saveXML(self::$xmlRepresentation->documentElement),
50+
strval($integerElement),
51+
);
52+
}
53+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<ssp:IntegerElement xmlns:ssp="urn:x-simplesamlphp:namespace">-001</ssp:IntegerElement>

0 commit comments

Comments
 (0)