File tree Expand file tree Collapse file tree 2 files changed +94
-0
lines changed Expand file tree Collapse file tree 2 files changed +94
-0
lines changed Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace Astrotomic \PhpunitAssertions ;
4
+
5
+ use PHPUnit \Framework \Assert as PHPUnit ;
6
+
7
+ trait UrlAssertions
8
+ {
9
+ public static function assertValidLoose ($ actual ): void
10
+ {
11
+ PHPUnit::assertIsString ($ actual );
12
+ PHPUnit::assertNotFalse (filter_var ($ actual , FILTER_VALIDATE_URL ));
13
+ }
14
+
15
+ public static function assertSameScheme (string $ expected , $ actual ): void
16
+ {
17
+ self ::assertSameComponent ($ expected , $ actual , PHP_URL_SCHEME );
18
+ }
19
+
20
+ public static function assertSameHost (string $ expected , $ actual ): void
21
+ {
22
+ self ::assertSameComponent ($ expected , $ actual , PHP_URL_HOST );
23
+ }
24
+
25
+ public static function assertSamePath (string $ expected , $ actual ): void
26
+ {
27
+ self ::assertSameComponent ($ expected , $ actual , PHP_URL_PATH );
28
+ }
29
+
30
+ public static function assertSameComponent ($ expected , $ actual , $ component ): void
31
+ {
32
+ self ::assertValidLoose ($ actual );
33
+ PHPUnit::assertSame ($ expected , parse_url ($ actual , $ component ));
34
+ }
35
+ }
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace Astrotomic \PhpunitAssertions \Tests ;
4
+
5
+ use Astrotomic \PhpunitAssertions \UrlAssertions ;
6
+
7
+ final class UrlAssertionsTest extends TestCase
8
+ {
9
+ /**
10
+ * @test
11
+ * @dataProvider hundredTimes
12
+ */
13
+ public static function it_can_validate_loose (): void
14
+ {
15
+ UrlAssertions::assertValidLoose ('https:// ' .self ::randomString ().'.com ' );
16
+ }
17
+
18
+ /**
19
+ * @test
20
+ * @dataProvider hundredTimes
21
+ */
22
+ public static function it_can_validate_scheme (): void
23
+ {
24
+ $ scheme = self ::randomElement ([
25
+ 'http ' ,
26
+ 'https ' ,
27
+ 'ftp ' ,
28
+ 'ssh ' ,
29
+ 'file ' ,
30
+ 'git ' ,
31
+ 'imap ' ,
32
+ 'irc ' ,
33
+ ]);
34
+
35
+ UrlAssertions::assertSameScheme ($ scheme , $ scheme .':// ' .self ::randomString ().'.com ' );
36
+ }
37
+
38
+ /**
39
+ * @test
40
+ * @dataProvider hundredTimes
41
+ */
42
+ public static function it_can_validate_host (): void
43
+ {
44
+ $ host = self ::randomString ().'.com ' ;
45
+
46
+ UrlAssertions::assertSameHost ($ host , 'https:// ' .$ host );
47
+ }
48
+
49
+ /**
50
+ * @test
51
+ * @dataProvider hundredTimes
52
+ */
53
+ public static function it_can_validate_path (): void
54
+ {
55
+ $ path = '/ ' .self ::randomString ().'/ ' .self ::randomString ();
56
+
57
+ UrlAssertions::assertSamePath ($ path , 'https:// ' .self ::randomString ().'.com ' .$ path );
58
+ }
59
+ }
You can’t perform that action at this time.
0 commit comments