From 8364249fbb5e21f71c98bf8924eb0549eb2a77e7 Mon Sep 17 00:00:00 2001 From: Vitaliy Dotsenko Date: Mon, 8 Jul 2019 21:12:21 +0300 Subject: [PATCH] Added unit tests to check Firewall rules --- tests/Endpoints/FirewallTest.php | 177 ++++++++++++++++++ .../Endpoints/createFirewallRule.json | 20 ++ .../Endpoints/createFirewallRules.json | 33 ++++ .../Endpoints/deleteFirewallRule.json | 8 + .../Fixtures/Endpoints/listFirewallRules.json | 27 +++ .../Endpoints/updateFirewallRule.json | 19 ++ 6 files changed, 284 insertions(+) create mode 100644 tests/Endpoints/FirewallTest.php create mode 100644 tests/Fixtures/Endpoints/createFirewallRule.json create mode 100644 tests/Fixtures/Endpoints/createFirewallRules.json create mode 100644 tests/Fixtures/Endpoints/deleteFirewallRule.json create mode 100644 tests/Fixtures/Endpoints/listFirewallRules.json create mode 100644 tests/Fixtures/Endpoints/updateFirewallRule.json diff --git a/tests/Endpoints/FirewallTest.php b/tests/Endpoints/FirewallTest.php new file mode 100644 index 0000000..c2b2ed6 --- /dev/null +++ b/tests/Endpoints/FirewallTest.php @@ -0,0 +1,177 @@ +getPsr7JsonResponseForFixture('Endpoints/createFirewallRules.json'); + + $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); + $mock->method('post')->willReturn($response); + + $mock->expects($this->once()) + ->method('post') + ->with( + $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/rules'), + $this->equalTo([ + [ + 'action' => 'block', + 'description' => 'Foo', + 'filter' => [ + 'expression' => 'http.cookie eq "foo"', + 'paused' => false + ], + ], + [ + 'action' => 'block', + 'description' => 'Bar', + 'filter' => [ + 'expression' => 'http.cookie eq "bar"', + 'paused' => false + ], + ] + ]) + ); + + $firewall = new Cloudflare\API\Endpoints\Firewall($mock); + $result = $firewall->createFirewallRules( + '023e105f4ecef8ad9ca31a8372d0c353', + [ + [ + 'filter' => [ + 'expression' => 'http.cookie eq "foo"', + 'paused' => false + ], + 'action' => 'block', + 'description' => 'Foo' + ], + [ + 'filter' => [ + 'expression' => 'http.cookie eq "bar"', + 'paused' => false + ], + 'action' => 'block', + 'description' => 'Bar' + ], + ] + ); + $this->assertTrue($result); + } + + public function testCreatePageRule() + { + $response = $this->getPsr7JsonResponseForFixture('Endpoints/createFirewallRule.json'); + + $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); + $mock->method('post')->willReturn($response); + + $mock->expects($this->once()) + ->method('post') + ->with( + $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/rules'), + $this->equalTo([ + [ + 'action' => 'block', + 'description' => 'Foobar', + 'filter' => [ + 'expression' => 'http.cookie eq "foobar"', + 'paused' => false + ], + 'paused' => false + ] + ]) + ); + + $firewall = new Cloudflare\API\Endpoints\Firewall($mock); + $options = new \Cloudflare\API\Configurations\FirewallRuleOptions(); + $options->setActionBlock(); + $result = $firewall->createFirewallRule( + '023e105f4ecef8ad9ca31a8372d0c353', + 'http.cookie eq "foobar"', + $options, + 'Foobar' + ); + $this->assertTrue($result); + } + + public function testListFirewallRules() + { + $response = $this->getPsr7JsonResponseForFixture('Endpoints/listFirewallRules.json'); + + $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); + $mock->method('get')->willReturn($response); + + $mock->expects($this->once()) + ->method('get') + ->with( + $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/rules'), + $this->equalTo([ + 'page' => 1, + 'per_page' => 50 + ]) + ); + + $firewall = new Cloudflare\API\Endpoints\Firewall($mock); + $result = $firewall->listFirewallRules('023e105f4ecef8ad9ca31a8372d0c353'); + + $this->assertObjectHasAttribute('result', $result); + $this->assertObjectHasAttribute('result_info', $result); + + $this->assertEquals('970b10321e3f4adda674c912b5f76591', $result->result[0]->id); + } + + public function testDeleteFirewallRule() + { + $response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteFirewallRule.json'); + + $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); + $mock->method('delete')->willReturn($response); + + $mock->expects($this->once()) + ->method('delete') + ->with( + $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/rules/970b10321e3f4adda674c912b5f76591') + ); + + $firewall = new Cloudflare\API\Endpoints\Firewall($mock); + $firewall->deleteFirewallRule('023e105f4ecef8ad9ca31a8372d0c353', '970b10321e3f4adda674c912b5f76591'); + } + + public function testUpdateFirewallRule() + { + $response = $this->getPsr7JsonResponseForFixture('Endpoints/updateFirewallRule.json'); + + $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); + $mock->method('put')->willReturn($response); + + $mock->expects($this->once()) + ->method('put') + ->with( + $this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/rules/970b10321e3f4adda674c912b5f76591'), + $this->equalTo([ + 'id' => '970b10321e3f4adda674c912b5f76591', + 'action' => 'block', + 'description' => 'Foo', + 'filter' => [ + 'id' => '5def9c4297e0466cb0736b838345d910', + 'expression' => 'http.cookie eq "foo"', + 'paused' => false + ], + 'paused' => false + ]) + ); + + $firewall = new Cloudflare\API\Endpoints\Firewall($mock); + $options = new \Cloudflare\API\Configurations\FirewallRuleOptions(); + $options->setActionBlock(); + $result = $firewall->updateFirewallRule( + '023e105f4ecef8ad9ca31a8372d0c353', + '970b10321e3f4adda674c912b5f76591', + '5def9c4297e0466cb0736b838345d910', + 'http.cookie eq "foo"', + $options, + 'Foo' + ); + $this->assertEquals('970b10321e3f4adda674c912b5f76591', $result->id); + } +} diff --git a/tests/Fixtures/Endpoints/createFirewallRule.json b/tests/Fixtures/Endpoints/createFirewallRule.json new file mode 100644 index 0000000..e00b22c --- /dev/null +++ b/tests/Fixtures/Endpoints/createFirewallRule.json @@ -0,0 +1,20 @@ +{ + "result": [ + { + "id": "970b10321e3f4adda674c912b5f76591", + "paused": false, + "description": "Foobar", + "action": "block", + "filter": { + "id": "70f39827184d487e97cc286b960f4cc3", + "expression": "http.cookie eq \"foobar\"", + "paused": false + }, + "created_on": "2019-07-05T15:53:15Z", + "modified_on": "2019-07-05T15:53:15Z" + } + ], + "success": true, + "errors": [], + "messages": [] +} diff --git a/tests/Fixtures/Endpoints/createFirewallRules.json b/tests/Fixtures/Endpoints/createFirewallRules.json new file mode 100644 index 0000000..0b08b18 --- /dev/null +++ b/tests/Fixtures/Endpoints/createFirewallRules.json @@ -0,0 +1,33 @@ +{ + "result": [ + { + "id": "970b10321e3f4adda674c912b5f76591", + "paused": false, + "description": "Foo", + "action": "block", + "filter": { + "id": "70f39827184d487e97cc286b960f4cc3", + "expression": "http.cookie eq \"foo\"", + "paused": false + }, + "created_on": "2019-07-05T15:53:15Z", + "modified_on": "2019-07-05T15:53:15Z" + }, + { + "id": "42c05fd0e0af4d17a361d2d1423476bc", + "paused": false, + "description": "Bar", + "action": "block", + "filter": { + "id": "246b4d9f5f51471485bdc95e1c6b53a7", + "expression": "http.cookie eq \"bar\"", + "paused": false + }, + "created_on": "2019-07-05T15:53:15Z", + "modified_on": "2019-07-05T15:53:15Z" + } + ], + "success": true, + "errors": [], + "messages": [] +} diff --git a/tests/Fixtures/Endpoints/deleteFirewallRule.json b/tests/Fixtures/Endpoints/deleteFirewallRule.json new file mode 100644 index 0000000..8a99884 --- /dev/null +++ b/tests/Fixtures/Endpoints/deleteFirewallRule.json @@ -0,0 +1,8 @@ +{ + "result": { + "id": "970b10321e3f4adda674c912b5f76591" + }, + "success": true, + "errors": [], + "messages": [] +} diff --git a/tests/Fixtures/Endpoints/listFirewallRules.json b/tests/Fixtures/Endpoints/listFirewallRules.json new file mode 100644 index 0000000..a343395 --- /dev/null +++ b/tests/Fixtures/Endpoints/listFirewallRules.json @@ -0,0 +1,27 @@ +{ + "result": [ + { + "id": "970b10321e3f4adda674c912b5f76591", + "paused": false, + "description": "Foobar", + "action": "block", + "filter": { + "id": "70f39827184d487e97cc286b960f4cc3", + "expression": "http.cookie eq \"foobar\"", + "paused": false + }, + "created_on": "2019-07-05T15:53:15Z", + "modified_on": "2019-07-05T15:53:15Z" + } + ], + "success": true, + "errors": [], + "messages": [], + "result_info": { + "page": 1, + "per_page": 50, + "count": 1, + "total_count": 1, + "total_pages": 1 + } +} diff --git a/tests/Fixtures/Endpoints/updateFirewallRule.json b/tests/Fixtures/Endpoints/updateFirewallRule.json new file mode 100644 index 0000000..27359e0 --- /dev/null +++ b/tests/Fixtures/Endpoints/updateFirewallRule.json @@ -0,0 +1,19 @@ +{ + "result": { + "id": "970b10321e3f4adda674c912b5f76591", + "paused": false, + "description": "Foo", + "action": "block", + "filter": { + "id": "5def9c4297e0466cb0736b838345d910", + "expression": "http.cookie eq \"foo\"", + "paused": false + }, + "created_on": "2019-07-05T15:53:15Z", + "modified_on": "2019-07-05T18:07:46Z", + "index": 1 + }, + "success": true, + "errors": [], + "messages": [] +}