Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\Component\Uuid;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Component\Uuid\Uuid;
|
Chris@0
|
6 use Drupal\Component\Uuid\UuidInterface;
|
Chris@0
|
7 use Drupal\Component\Uuid\Com;
|
Chris@0
|
8 use Drupal\Component\Uuid\Pecl;
|
Chris@0
|
9 use Drupal\Component\Uuid\Php;
|
Chris@0
|
10 use PHPUnit\Framework\TestCase;
|
Chris@0
|
11
|
Chris@0
|
12 /**
|
Chris@0
|
13 * Tests the handling of Universally Unique Identifiers (UUIDs).
|
Chris@0
|
14 *
|
Chris@0
|
15 * @group Uuid
|
Chris@0
|
16 */
|
Chris@0
|
17 class UuidTest extends TestCase {
|
Chris@0
|
18
|
Chris@0
|
19 /**
|
Chris@0
|
20 * Tests generating valid UUIDs.
|
Chris@0
|
21 *
|
Chris@0
|
22 * @dataProvider providerUuidInstances
|
Chris@0
|
23 */
|
Chris@0
|
24 public function testGenerateUuid(UuidInterface $instance) {
|
Chris@0
|
25 $this->assertTrue(Uuid::isValid($instance->generate()), sprintf('UUID generation for %s works.', get_class($instance)));
|
Chris@0
|
26 }
|
Chris@0
|
27
|
Chris@0
|
28 /**
|
Chris@0
|
29 * Tests that generated UUIDs are unique.
|
Chris@0
|
30 *
|
Chris@0
|
31 * @dataProvider providerUuidInstances
|
Chris@0
|
32 */
|
Chris@0
|
33 public function testUuidIsUnique(UuidInterface $instance) {
|
Chris@0
|
34 $this->assertNotEquals($instance->generate(), $instance->generate(), sprintf('Same UUID was not generated twice with %s.', get_class($instance)));
|
Chris@0
|
35 }
|
Chris@0
|
36
|
Chris@0
|
37 /**
|
Chris@0
|
38 * Dataprovider for UUID instance tests.
|
Chris@0
|
39 *
|
Chris@0
|
40 * @return array
|
Chris@0
|
41 */
|
Chris@0
|
42 public function providerUuidInstances() {
|
Chris@0
|
43
|
Chris@0
|
44 $instances = [];
|
Chris@0
|
45 $instances[][] = new Php();
|
Chris@0
|
46
|
Chris@0
|
47 // If valid PECL extensions exists add to list.
|
Chris@0
|
48 if (function_exists('uuid_create') && !function_exists('uuid_make')) {
|
Chris@0
|
49 $instances[][] = new Pecl();
|
Chris@0
|
50 }
|
Chris@0
|
51
|
Chris@0
|
52 // If we are on Windows add the com implementation as well.
|
Chris@0
|
53 if (function_exists('com_create_guid')) {
|
Chris@0
|
54 $instances[][] = new Com();
|
Chris@0
|
55 }
|
Chris@0
|
56
|
Chris@0
|
57 return $instances;
|
Chris@0
|
58 }
|
Chris@0
|
59
|
Chris@0
|
60 /**
|
Chris@0
|
61 * Tests UUID validation.
|
Chris@0
|
62 *
|
Chris@0
|
63 * @param string $uuid
|
Chris@0
|
64 * The uuid to check against.
|
Chris@0
|
65 * @param bool $is_valid
|
Chris@0
|
66 * Whether the uuid is valid or not.
|
Chris@0
|
67 * @param string $message
|
Chris@0
|
68 * The message to display on failure.
|
Chris@0
|
69 *
|
Chris@0
|
70 * @dataProvider providerTestValidation
|
Chris@0
|
71 */
|
Chris@0
|
72 public function testValidation($uuid, $is_valid, $message) {
|
Chris@0
|
73 $this->assertSame($is_valid, Uuid::isValid($uuid), $message);
|
Chris@0
|
74 }
|
Chris@0
|
75
|
Chris@0
|
76 /**
|
Chris@0
|
77 * Dataprovider for UUID instance tests.
|
Chris@0
|
78 *
|
Chris@0
|
79 * @return array
|
Chris@0
|
80 * An array of arrays containing
|
Chris@0
|
81 * - The Uuid to check against.
|
Chris@0
|
82 * - (bool) Whether or not the Uuid is valid.
|
Chris@0
|
83 * - Failure message.
|
Chris@0
|
84 */
|
Chris@0
|
85 public function providerTestValidation() {
|
Chris@0
|
86 return [
|
Chris@0
|
87 // These valid UUIDs.
|
Chris@0
|
88 ['6ba7b810-9dad-11d1-80b4-00c04fd430c8', TRUE, 'Basic FQDN UUID did not validate'],
|
Chris@0
|
89 ['00000000-0000-0000-0000-000000000000', TRUE, 'Minimum UUID did not validate'],
|
Chris@0
|
90 ['ffffffff-ffff-ffff-ffff-ffffffffffff', TRUE, 'Maximum UUID did not validate'],
|
Chris@0
|
91 // These are invalid UUIDs.
|
Chris@0
|
92 ['0ab26e6b-f074-4e44-9da-601205fa0e976', FALSE, 'Invalid format was validated'],
|
Chris@0
|
93 ['0ab26e6b-f074-4e44-9daf-1205fa0e9761f', FALSE, 'Invalid length was validated'],
|
Chris@0
|
94 ];
|
Chris@0
|
95 }
|
Chris@0
|
96
|
Chris@0
|
97 }
|