Skip to content

Commit e4ec849

Browse files
committed
Extract status code exvception tests into separate class
1 parent 60b07ad commit e4ec849

3 files changed

Lines changed: 151 additions & 102 deletions

File tree

tests/Exception/Http/HttpTest.php

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
use WpOrg\Requests\Exception\Http\Status404;
77
use WpOrg\Requests\Exception\Http\StatusUnknown;
88
use WpOrg\Requests\Tests\TestCase;
9-
use WpOrg\Requests\Utility\HttpStatus;
109

1110
/**
1211
* @covers \WpOrg\Requests\Exception\Http
@@ -103,45 +102,4 @@ public static function dataGetClass() {
103102
],
104103
];
105104
}
106-
107-
/**
108-
* Test whether all HTTP exception class can be instantiated.
109-
*
110-
* We're making sure that if such an exception gets triggered, it will not
111-
* fatal because of a broken exception class.
112-
*
113-
* @dataProvider dataInstantiateHttpException
114-
*
115-
* @param int status_code HTTP status code.
116-
* @param string $expected_exception_class Exception class to expect.
117-
*
118-
* @return void
119-
*/
120-
public function testInstantiateHttpException($status_code, $expected_exception_class) {
121-
$exception_class = Http::get_class($status_code);
122-
$exception_object = new $exception_class('testing-1-2-3');
123-
$this->assertInstanceOf(Http::class, $exception_object);
124-
$this->assertInstanceOf($expected_exception_class, $exception_object);
125-
}
126-
127-
/**
128-
* Data provider.
129-
*
130-
* @return array
131-
*/
132-
public static function dataInstantiateHttpException() {
133-
$all_status_codes = array_keys(HttpStatus::MAP);
134-
$non_exception_codes = [100, 101, 102, 103, 200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 307, 308];
135-
136-
$data = [];
137-
foreach ($all_status_codes as $status) {
138-
$classname = in_array($status, $non_exception_codes, true)
139-
? StatusUnknown::class
140-
: Http::class . '\Status' . $status;
141-
142-
$data['Status ' . $status] = [$status, $classname];
143-
}
144-
145-
return $data;
146-
}
147105
}
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
<?php
2+
3+
namespace WpOrg\Requests\Tests\Exception\Http;
4+
5+
use WpOrg\Requests\Exception\Http;
6+
use WpOrg\Requests\Response;
7+
use WpOrg\Requests\Utility\HttpStatus;
8+
use WpOrg\Requests\Tests\TestCase;
9+
10+
/**
11+
* @covers \WpOrg\Requests\Exception\Http\Status304
12+
* @covers \WpOrg\Requests\Exception\Http\Status305
13+
* @covers \WpOrg\Requests\Exception\Http\Status306
14+
* @covers \WpOrg\Requests\Exception\Http\Status400
15+
* @covers \WpOrg\Requests\Exception\Http\Status401
16+
* @covers \WpOrg\Requests\Exception\Http\Status402
17+
* @covers \WpOrg\Requests\Exception\Http\Status403
18+
* @covers \WpOrg\Requests\Exception\Http\Status404
19+
* @covers \WpOrg\Requests\Exception\Http\Status405
20+
* @covers \WpOrg\Requests\Exception\Http\Status406
21+
* @covers \WpOrg\Requests\Exception\Http\Status407
22+
* @covers \WpOrg\Requests\Exception\Http\Status408
23+
* @covers \WpOrg\Requests\Exception\Http\Status409
24+
* @covers \WpOrg\Requests\Exception\Http\Status410
25+
* @covers \WpOrg\Requests\Exception\Http\Status411
26+
* @covers \WpOrg\Requests\Exception\Http\Status412
27+
* @covers \WpOrg\Requests\Exception\Http\Status413
28+
* @covers \WpOrg\Requests\Exception\Http\Status414
29+
* @covers \WpOrg\Requests\Exception\Http\Status415
30+
* @covers \WpOrg\Requests\Exception\Http\Status416
31+
* @covers \WpOrg\Requests\Exception\Http\Status417
32+
* @covers \WpOrg\Requests\Exception\Http\Status418
33+
* @covers \WpOrg\Requests\Exception\Http\Status421
34+
* @covers \WpOrg\Requests\Exception\Http\Status422
35+
* @covers \WpOrg\Requests\Exception\Http\Status423
36+
* @covers \WpOrg\Requests\Exception\Http\Status424
37+
* @covers \WpOrg\Requests\Exception\Http\Status425
38+
* @covers \WpOrg\Requests\Exception\Http\Status426
39+
* @covers \WpOrg\Requests\Exception\Http\Status428
40+
* @covers \WpOrg\Requests\Exception\Http\Status429
41+
* @covers \WpOrg\Requests\Exception\Http\Status431
42+
* @covers \WpOrg\Requests\Exception\Http\Status451
43+
* @covers \WpOrg\Requests\Exception\Http\Status500
44+
* @covers \WpOrg\Requests\Exception\Http\Status501
45+
* @covers \WpOrg\Requests\Exception\Http\Status502
46+
* @covers \WpOrg\Requests\Exception\Http\Status503
47+
* @covers \WpOrg\Requests\Exception\Http\Status504
48+
* @covers \WpOrg\Requests\Exception\Http\Status505
49+
* @covers \WpOrg\Requests\Exception\Http\Status506
50+
* @covers \WpOrg\Requests\Exception\Http\Status507
51+
* @covers \WpOrg\Requests\Exception\Http\Status508
52+
* @covers \WpOrg\Requests\Exception\Http\Status510
53+
* @covers \WpOrg\Requests\Exception\Http\Status511
54+
* @covers \WpOrg\Requests\Exception\Http\StatusUnknown
55+
*/
56+
final class StatusCodeTest extends TestCase {
57+
58+
/**
59+
* Test whether all HTTP exception classes can be instantiated for unknown status codes.
60+
*
61+
* We're making sure that if such an exception gets triggered, it will not
62+
* fatal because of a broken exception class.
63+
*
64+
* @dataProvider dataUnknownStatusCodes
65+
*
66+
* @param int $expected_code Expected error code.
67+
* @param mixed $data Optional. Input for the Exception constructor argument.
68+
*
69+
* @return void
70+
*/
71+
public function testUnknownStatusCodes($expected_code, $data = null) {
72+
$this->expectException(Http\StatusUnknown::class);
73+
$this->expectExceptionCode($expected_code);
74+
75+
throw new Http\StatusUnknown('testing-1-2-3', $data);
76+
}
77+
78+
/**
79+
* Data provider.
80+
*
81+
* @return array
82+
*/
83+
public static function dataUnknownStatusCodes() {
84+
$response_with_status = new Response();
85+
$response_with_status->status_code = 12345;
86+
87+
$response_without_status = new Response();
88+
89+
return [
90+
'null (or not passed)' => [
91+
'expectedCode' => 0,
92+
],
93+
'integer error code as data' => [
94+
'expectedCode' => 0,
95+
'data' => 507,
96+
],
97+
'Response object with status code' => [
98+
'expectedCode' => 12345,
99+
'data' => $response_with_status,
100+
],
101+
'Response object without status code' => [
102+
'expectedCode' => 0,
103+
'data' => $response_without_status,
104+
],
105+
];
106+
}
107+
108+
/**
109+
* Test whether all HTTP exception classes can be instantiated for known status codes.
110+
*
111+
* We're making sure that if such an exception gets triggered, it will not
112+
* fatal because of a broken exception class.
113+
*
114+
* @dataProvider dataKnownStatusCodes
115+
*
116+
* @param int status_code HTTP status code.
117+
* @param string $expected_exception_class Exception class to expect.
118+
*
119+
* @return void
120+
*/
121+
public function testKnownStatusCodes($status_code, $expected_exception_class) {
122+
$response_with_status = new Response();
123+
$response_with_status->status_code = $status_code;
124+
125+
$exception_class = Http::get_class($status_code);
126+
$exception_object = new $exception_class('testing-1-2-3');
127+
$this->assertInstanceOf(Http::class, $exception_object);
128+
$this->assertInstanceOf($expected_exception_class, $exception_object);
129+
}
130+
131+
/**
132+
* Data provider.
133+
*
134+
* @return array
135+
*/
136+
public static function dataKnownStatusCodes() {
137+
$all_status_codes = array_keys(HttpStatus::MAP);
138+
$non_exception_codes = [100, 101, 102, 103, 200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 307, 308];
139+
140+
$data = [];
141+
foreach ($all_status_codes as $status) {
142+
$classname = in_array($status, $non_exception_codes, true)
143+
? Http\StatusUnknown::class
144+
: Http::class . '\Status' . $status;
145+
146+
$data['Status ' . $status] = [$status, $classname];
147+
}
148+
149+
return $data;
150+
}
151+
}

tests/Exception/Http/StatusUnknownTest.php

Lines changed: 0 additions & 60 deletions
This file was deleted.

0 commit comments

Comments
 (0)