35 Commits
1.0.3 ... 1.0.5

Author SHA1 Message Date
Junade
3cfaed1019 Merge pull request #31 from cloudflare/waf_railgun
Readability: railID to railgunID
2017-10-23 14:37:38 -07:00
Junade Ali
84ee7302ca Readibility: railID to railgunID 2017-10-23 14:29:41 -07:00
Junade
f088c67314 Merge pull request #30 from cloudflare/waf_railgun
Add Web Application Firewall and Railgun
2017-10-23 14:21:45 -07:00
Junade Ali
30fc22aa5b Add Web Application Firewall and Railgun. 2017-10-23 14:17:09 -07:00
Junade
0d89f13f9b Merge pull request #27 from cloudflare/phpmd
Enable PHPMD for src and tests
2017-10-13 15:23:15 +01:00
Junade Ali
ca9e5bbc28 Enabled PHPMD for src and tests 2017-10-13 15:18:08 +01:00
Junade Ali
f0213ecf92 Merge branch 'master' of github.com:cloudflare/cloudflare-php 2017-10-13 14:44:46 +01:00
Junade
b4a6237509 Merge pull request #25 from MertOtrk/patch-1
About cache - 1107 Error code
2017-10-12 01:55:32 +01:00
Mert Oturak
a909f3780e About cache - 1107 Error code 2017-10-12 03:42:35 +03:00
Junade
e1cf1ae41f Merge pull request #24 from limenet/master
Don't double JSON-encode the request
2017-10-07 00:03:10 +01:00
Linus Metzler
70ee68f755 fix the test 2017-10-05 14:44:09 +02:00
Linus Metzler
566ab3fc70 Don't run json_encode
Guzzle takes care of this thanks to its JSON middleware
2017-10-03 21:16:58 +02:00
Junade
ca80e2c388 Merge pull request #23 from cloudflare/cacheoncookie-patch
Correct input types for (Bypass) Cache on Cookie
2017-10-03 18:16:07 +01:00
Junade Ali
d49028a31e Updated DNSTest style. 2017-10-03 18:09:07 +01:00
Junade Ali
6a76e1cc3c Updated DNSTest style. 2017-10-03 18:08:32 +01:00
Junade
a5384b7466 Correct input types for (Bypass) Cache on Cookie 2017-10-03 17:59:59 +01:00
Junade
8ffd3e3541 Merge pull request #18 from anthonysterling/feature/page-rules-config
Consolidated some of the config/option creation
2017-10-03 17:57:57 +01:00
Junade
3ce5e1911f Merge pull request #21 from anthonysterling/fix/issue-19
Added test coverage for DNS Update
2017-10-03 17:42:26 +01:00
Junade
1226d35472 Merge pull request #22 from anthonysterling/fix/inconsistent-array-declaration
Inconsistent Array Declaration
2017-10-03 17:42:16 +01:00
Anthony Sterling
cebeae15a3 Inconsistent Array Declaration
This PR normalises the declaration of arrays throughout the project, and adds
this to the php-cs-fixer rules.

I've chosen "short" by default, but happy to change the PR to use "long" if
preferred.
2017-10-02 09:05:05 +01:00
Anthony Sterling
db62f1db8a Added test coverage for DNS Update
I've added a test to cover the updating of a DNS record to help debug Issue #19
2017-10-02 08:48:43 +01:00
Anthony Sterling
b7e70655ce Consolidated some of the config/option creation
I've just added some internal methods to handle the casting and formatting of the
configuration/option creation.
2017-09-28 21:16:27 +01:00
Junade
49ed1c9e8f Merge pull request #17 from cloudflare/issue-16
Move friendsofphp/php-cs-fixer to dev requirement
2017-09-25 16:41:28 +01:00
Junade
68a26e7e77 Comma correction 2017-09-25 15:49:49 +01:00
Junade
b4a13d8e2b Move friendsofphp/php-cs-fixer to dev requirement 2017-09-25 15:48:07 +01:00
Junade
a80747ee06 Merge pull request #15 from anthonysterling/feature/fixtures
Moved JSON API Responses to test fixtures
2017-09-24 18:41:15 +01:00
Anthony Sterling
fbb5aac074 Moved JSON API Responses to test fixtures
This PR moves the JSON API responses used in the tests to fixture files
within the tests folder. This allows reuse and the ability to lint/validate
these fixtures if required - although not covered in this PR.

I've added TestCase::getPsr7StreamForFixture and TestCase::getPsr7JsonResponseForFixture
to reduce code duplication and enable some assertions around the expected fixures/responses.

Thanks,
2017-09-24 15:24:33 +01:00
Junade
471227b96f Merge pull request #14 from anthonysterling/feature/coding-standard
feature/coding standard
2017-09-24 14:07:03 +01:00
Junade
4d17609641 Merge pull request #13 from kelunik/readme-improvements
Remove leading namespace slashes in README
2017-09-24 14:04:09 +01:00
Anthony Sterling
feecc9fcbb Added lint target as php-cs-fixer only returns a non-zero exit code during dry run now 2017-09-23 22:04:26 +01:00
Anthony Sterling
589766e008 Removed the before_script section for Travis CI as this functionality is default now 2017-09-23 19:02:17 +01:00
Anthony Sterling
2faff272df Applied PSR2 formatting to existing files 2017-09-23 18:50:51 +01:00
Anthony Sterling
90196ea836 Added, and configured, php-cs-fixer with a Makefile to invoke fix and test 2017-09-23 18:49:58 +01:00
Anthony Sterling
80c611691b Removed out-of-date composer.lock file - libraries usually do not contain one anyway 2017-09-23 18:39:45 +01:00
Niklas Keller
85385dedf5 Remove leading namespace slashes in README
This makes it consistent with the middle line and is nicer to read.
2017-09-23 11:52:05 +02:00
91 changed files with 2259 additions and 2902 deletions

15
.php_cs Normal file
View File

@@ -0,0 +1,15 @@
<?php
$finder = PhpCsFixer\Finder::create()
->in(__DIR__ . '/src')
->in(__DIR__ . '/tests')
;
return PhpCsFixer\Config::create()
->setUsingCache(false)
->setRules([
'@PSR2' => true,
'array_syntax' => ['syntax' => 'short'],
])
->setFinder($finder)
;

View File

@@ -11,4 +11,5 @@ install:
- travis_retry composer install --no-interaction --prefer-source - travis_retry composer install --no-interaction --prefer-source
script: script:
- composer test - make lint
- make test

17
Makefile Normal file
View File

@@ -0,0 +1,17 @@
THIS := $(realpath $(lastword $(MAKEFILE_LIST)))
HERE := $(shell dirname $(THIS))
.PHONY: all fix lint test
all: lint test
fix:
php $(HERE)/vendor/bin/php-cs-fixer fix --config=$(HERE)/.php_cs
lint:
php $(HERE)/vendor/bin/php-cs-fixer fix --config=$(HERE)/.php_cs --dry-run
php $(HERE)/vendor/bin/phpmd src/ text cleancode,codesize,controversial,design,naming,unusedcode
php $(HERE)/vendor/bin/phpmd tests/ text cleancode,codesize,controversial,design,naming,unusedcode
test:
php $(HERE)/vendor/bin/phpunit --configuration $(HERE)/phpunit.xml

View File

@@ -17,12 +17,12 @@ Each API call is provided via a similarly named function within various classes
- [x] User Administration (partial) - [x] User Administration (partial)
- [x] [Cloudflare IPs](https://www.cloudflare.com/ips/) - [x] [Cloudflare IPs](https://www.cloudflare.com/ips/)
- [x] [Page Rules](https://support.cloudflare.com/hc/en-us/articles/200168306-Is-there-a-tutorial-for-Page-Rules-) - [x] [Page Rules](https://support.cloudflare.com/hc/en-us/articles/200168306-Is-there-a-tutorial-for-Page-Rules-)
- [ ] [Web Application Firewall (WAF)](https://www.cloudflare.com/waf/) - [x] [Web Application Firewall (WAF)](https://www.cloudflare.com/waf/)
- [ ] Virtual DNS Management - [ ] Virtual DNS Management
- [ ] Custom hostnames - [ ] Custom hostnames
- [x] Zone Lockdown and User-Agent Block rules - [x] Zone Lockdown and User-Agent Block rules
- [ ] Organization Administration - [ ] Organization Administration
- [ ] [Railgun](https://www.cloudflare.com/railgun/) administration - [x] [Railgun](https://www.cloudflare.com/railgun/) administration
- [ ] [Keyless SSL](https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/) - [ ] [Keyless SSL](https://blog.cloudflare.com/keyless-ssl-the-nitty-gritty-technical-details/)
- [ ] [Origin CA](https://blog.cloudflare.com/universal-ssl-encryption-all-the-way-to-the-origin-for-free/) - [ ] [Origin CA](https://blog.cloudflare.com/universal-ssl-encryption-all-the-way-to-the-origin-for-free/)
@@ -31,9 +31,9 @@ Note that this repository is currently under development, additional classes and
## Getting Started ## Getting Started
```php ```php
$key = new \Cloudflare\API\Auth\APIKey('user@example.com', 'apiKey'); $key = new Cloudflare\API\Auth\APIKey('user@example.com', 'apiKey');
$adapter = new Cloudflare\API\Adapter\Guzzle($key); $adapter = new Cloudflare\API\Adapter\Guzzle($key);
$user = new \Cloudflare\API\Endpoints\User($adapter); $user = new Cloudflare\API\Endpoints\User($adapter);
echo $user->getUserID(); echo $user->getUserID();
``` ```

View File

@@ -9,7 +9,8 @@
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "5.7.5", "phpunit/phpunit": "5.7.5",
"phpmd/phpmd" : "@stable" "phpmd/phpmd" : "@stable",
"friendsofphp/php-cs-fixer": "^2.6"
}, },
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"authors": [ "authors": [
@@ -23,7 +24,9 @@
"Cloudflare\\API\\": "src/" "Cloudflare\\API\\": "src/"
} }
}, },
"scripts": { "autoload-dev": {
"test": "phpunit" "classmap": [
"tests/"
]
} }
} }

1826
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,7 +7,6 @@
namespace Cloudflare\API\Adapter; namespace Cloudflare\API\Adapter;
use Cloudflare\API\Auth\Auth; use Cloudflare\API\Auth\Auth;
use GuzzleHttp\Client; use GuzzleHttp\Client;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
@@ -38,21 +37,22 @@ class Guzzle implements Adapter
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function get(String $uri, array $query = array(), array $headers = array()): ResponseInterface public function get(String $uri, array $query = [], array $headers = []): ResponseInterface
{ {
$response = $this->client->get($uri, ['query' => $query, 'headers' => $headers]); $response = $this->client->get($uri, ['query' => $query, 'headers' => $headers]);
$this->checkError($response); $this->checkError($response);
return $response; return $response;
} }
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function post(String $uri, array $headers = array(), array $body = array()): ResponseInterface public function post(String $uri, array $headers = [], array $body = []): ResponseInterface
{ {
$response = $this->client->post($uri, [ $response = $this->client->post(
$uri,
[
'headers' => $headers, 'headers' => $headers,
'json' => $body 'json' => $body
] ]
@@ -65,13 +65,13 @@ class Guzzle implements Adapter
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function put(String $uri, array $headers = array(), array $body = array()): ResponseInterface public function put(String $uri, array $headers = [], array $body = []): ResponseInterface
{ {
$jsonBody = json_encode($body); $response = $this->client->put(
$uri,
$response = $this->client->put($uri, [ [
'headers' => $headers, 'headers' => $headers,
'json' => $jsonBody 'json' => $body
] ]
); );
@@ -82,13 +82,13 @@ class Guzzle implements Adapter
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function patch(String $uri, array $headers = array(), array $body = array()): ResponseInterface public function patch(String $uri, array $headers = [], array $body = []): ResponseInterface
{ {
$jsonBody = json_encode($body); $response = $this->client->patch(
$uri,
$response = $this->client->patch($uri, [ [
'headers' => $headers, 'headers' => $headers,
'json' => $jsonBody 'json' => $body
] ]
); );
@@ -99,9 +99,11 @@ class Guzzle implements Adapter
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function delete(String $uri, array $headers = array(), array $body = array()): ResponseInterface public function delete(String $uri, array $headers = [], array $body = []): ResponseInterface
{ {
$response = $this->client->delete($uri, [ $response = $this->client->delete(
$uri,
[
'headers' => $headers, 'headers' => $headers,
'json' => $body 'json' => $body
] ]

View File

@@ -8,8 +8,6 @@
namespace Cloudflare\API\Adapter; namespace Cloudflare\API\Adapter;
class JSONException extends \Exception class JSONException extends \Exception
{ {
} }

View File

@@ -8,8 +8,6 @@
namespace Cloudflare\API\Adapter; namespace Cloudflare\API\Adapter;
class ResponseException extends \Exception class ResponseException extends \Exception
{ {
} }

View File

@@ -7,7 +7,6 @@
namespace Cloudflare\API\Auth; namespace Cloudflare\API\Auth;
class APIKey implements Auth class APIKey implements Auth
{ {
private $email; private $email;

View File

@@ -7,7 +7,6 @@
namespace Cloudflare\API\Auth; namespace Cloudflare\API\Auth;
interface Auth interface Auth
{ {
public function getHeaders(): array; public function getHeaders(): array;

View File

@@ -8,7 +8,6 @@
namespace Cloudflare\API\Auth; namespace Cloudflare\API\Auth;
class None implements Auth class None implements Auth
{ {
public function getHeaders(): array public function getHeaders(): array

View File

@@ -7,7 +7,6 @@
namespace Cloudflare\API\Auth; namespace Cloudflare\API\Auth;
class UserServiceKey implements Auth class UserServiceKey implements Auth
{ {
private $userServiceKey; private $userServiceKey;

View File

@@ -8,7 +8,6 @@
namespace Cloudflare\API\Configurations; namespace Cloudflare\API\Configurations;
interface Configurations interface Configurations
{ {
public function getArray(): array; public function getArray(): array;

View File

@@ -8,8 +8,6 @@
namespace Cloudflare\API\Configurations; namespace Cloudflare\API\Configurations;
class ConfigurationsException extends \Exception class ConfigurationsException extends \Exception
{ {
} }

View File

@@ -10,73 +10,59 @@ namespace Cloudflare\API\Configurations;
class PageRulesActions implements Configurations class PageRulesActions implements Configurations
{ {
private $configs = array(); private $configs = [];
public function setAlwaysOnline(bool $active) public function setAlwaysOnline(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("always_online", [
$object->id = "always_online"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setAlwaysUseHTTPS(bool $active) public function setAlwaysUseHTTPS(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("always_use_https", [
$object->id = "always_use_https"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setBrowserCacheTTL(int $ttl) public function setBrowserCacheTTL(int $ttl)
{ {
$object = new \stdClass(); $this->addConfigurationOption("browser_cache_ttl", [
$object->id = "browser_cache_ttl"; 'value' => $ttl
$object->value = $ttl; ]);
array_push($this->configs, $object);
} }
public function setBrowserIntegrityCheck(bool $active) public function setBrowserIntegrityCheck(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("browser_check", [
$object->id = "browser_check"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setBypassCacheOnCookie(bool $value) public function setBypassCacheOnCookie(string $value)
{ {
if (preg_match('/^([a-zA-Z0-9\.=|_*-]+)$/i', $value) < 1) { if (preg_match('/^([a-zA-Z0-9\.=|_*-]+)$/i', $value) < 1) {
throw new ConfigurationsException("Invalid cookie string."); throw new ConfigurationsException("Invalid cookie string.");
} }
$object = new \stdClass(); $this->addConfigurationOption("bypass_cache_on_cookie", [
$object->id = "bypass_cache_on_cookie"; 'value' => $value
$object->value = $value; ]);
array_push($this->configs, $object);
} }
public function setCacheByDeviceType(bool $active) public function setCacheByDeviceType(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("cache_by_device_type", [
$object->id = "cache_by_device_type"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setCacheKey(string $value) public function setCacheKey(string $value)
{ {
$object = new \stdClass(); $this->addConfigurationOption("cache_key", [
$object->id = "cache_key"; 'value' => $value
$object->value = $value; ]);
array_push($this->configs, $object);
} }
public function setCacheLevel(string $value) public function setCacheLevel(string $value)
@@ -85,51 +71,41 @@ class PageRulesActions implements Configurations
throw new ConfigurationsException("Invalid cache level"); throw new ConfigurationsException("Invalid cache level");
} }
$object = new \stdClass(); $this->addConfigurationOption("cache_level", [
$object->id = "cache_level"; 'value' => $value
$object->value = $value; ]);
array_push($this->configs, $object);
} }
public function setCacheOnCookie(bool $value) public function setCacheOnCookie(string $value)
{ {
if (preg_match('/^([a-zA-Z0-9\.=|_*-]+)$/i', $value) < 1) { if (preg_match('/^([a-zA-Z0-9\.=|_*-]+)$/i', $value) < 1) {
throw new ConfigurationsException("Invalid cookie string."); throw new ConfigurationsException("Invalid cookie string.");
} }
$object = new \stdClass(); $this->addConfigurationOption("cache_on_cookie", [
$object->id = "cache_on_cookie"; 'value' => $value
$object->value = $value; ]);
array_push($this->configs, $object);
} }
public function setDisableApps(bool $active) public function setDisableApps(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("disable_apps", [
$object->id = "disable_apps"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setDisablePerformance(bool $active) public function setDisablePerformance(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("disable_performance", [
$object->id = "disable_performance"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setDisableSecurity(bool $active) public function setDisableSecurity(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("disable_security", [
$object->id = "disable_security"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setEdgeCacheTTL(int $value) public function setEdgeCacheTTL(int $value)
@@ -138,135 +114,107 @@ class PageRulesActions implements Configurations
throw new ConfigurationsException("Edge Cache TTL too high."); throw new ConfigurationsException("Edge Cache TTL too high.");
} }
$object = new \stdClass(); $this->addConfigurationOption("edge_cache_ttl", [
$object->id = "edge_cache_ttl"; 'value' => $value
$object->value = $value; ]);
array_push($this->configs, $object);
} }
public function setEmailObfuscation(bool $active) public function setEmailObfuscation(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("disable_security", [
$object->id = "disable_security"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setForwardingURL(int $statusCode, string $forwardingUrl) public function setForwardingURL(int $statusCode, string $forwardingUrl)
{ {
if (in_array($statusCode, ['301', '302'])) { if (!in_array($statusCode, ['301', '302'])) {
throw new ConfigurationsException('Status Codes can only be 301 or 302.'); throw new ConfigurationsException('Status Codes can only be 301 or 302.');
} }
$object = new \stdClass(); $this->addConfigurationOption("forwarding_url", [
$object->id = "forwarding_url"; 'status_code' => $statusCode,
$object->status_code = $statusCode; 'url' => $forwardingUrl,
$object->url = $forwardingUrl; ]);
array_push($this->configs, $object);
} }
public function setHostHeaderOverride(bool $active) public function setHostHeaderOverride(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("host_header_override", [
$object->id = "host_header_override"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setHotlinkProtection(bool $active) public function setHotlinkProtection(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("hotlink_protection", [
$object->id = "hotlink_protection"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setIPGeoLocationHeader(bool $active) public function setIPGeoLocationHeader(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("ip_geolocation", [
$object->id = "ip_geolocation"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setMinification(bool $html, bool $css, bool $js) public function setMinification(bool $html, bool $css, bool $javascript)
{ {
$object = new \stdClass(); $this->addConfigurationOption("minification", [
$object->id = "minification"; 'html' => $this->getBoolAsOnOrOff($html),
$object->html = $html === true ? "on" : "off"; 'css' => $this->getBoolAsOnOrOff($css),
$object->css = $css === true ? "on" : "off"; 'js' => $this->getBoolAsOnOrOff($javascript),
$object->js = $js === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setMirage(bool $active) public function setMirage(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("mirage", [
$object->id = "mirage"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setOriginErrorPagePassthru(bool $active) public function setOriginErrorPagePassthru(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("origin_error_page_pass_thru", [
$object->id = "origin_error_page_pass_thru"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setQueryStringSort(bool $active) public function setQueryStringSort(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("sort_query_string_for_cache", [
$object->id = "sort_query_string_for_cache"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setDisableRailgun(bool $active) public function setDisableRailgun(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("disable_railgun", [
$object->id = "disable_railgun"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setResolveOverride(bool $value) public function setResolveOverride(bool $value)
{ {
$object = new \stdClass(); $this->addConfigurationOption("resolve_override", [
$object->id = "resolve_override"; 'value' => $value
$object->value = $value; ]);
array_push($this->configs, $object);
} }
public function setRespectStrongEtag(bool $active) public function setRespectStrongEtag(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("respect_strong_etag", [
$object->id = "respect_strong_etag"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setResponseBuffering(bool $active) public function setResponseBuffering(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("response_buffering", [
$object->id = "response_buffering"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setRocketLoader(string $value) public function setRocketLoader(string $value)
@@ -275,11 +223,9 @@ class PageRulesActions implements Configurations
throw new ConfigurationsException('Rocket Loader can only be off, automatic, or manual.'); throw new ConfigurationsException('Rocket Loader can only be off, automatic, or manual.');
} }
$object = new \stdClass(); $this->addConfigurationOption("rocket_loader", [
$object->id = "rocket_loader"; 'value' => $value
$object->value = $value; ]);
array_push($this->configs, $object);
} }
public function setSecurityLevel(string $value) public function setSecurityLevel(string $value)
@@ -288,29 +234,23 @@ class PageRulesActions implements Configurations
throw new ConfigurationsException('Can only be set to off, essentially_off, low, medium, high or under_attack.'); throw new ConfigurationsException('Can only be set to off, essentially_off, low, medium, high or under_attack.');
} }
$object = new \stdClass(); $this->addConfigurationOption("security_level", [
$object->id = "security_level"; 'value' => $value
$object->value = $value; ]);
array_push($this->configs, $object);
} }
public function setServerSideExcludes(bool $active) public function setServerSideExcludes(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("server_side_exclude", [
$object->id = "server_side_exclude"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setSmartErrors(bool $active) public function setSmartErrors(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("smart_errors", [
$object->id = "smart_errors"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setSSL(string $value) public function setSSL(string $value)
@@ -319,51 +259,53 @@ class PageRulesActions implements Configurations
throw new ConfigurationsException('Can only be set to off, flexible, full, strict, origin_pull.'); throw new ConfigurationsException('Can only be set to off, flexible, full, strict, origin_pull.');
} }
$object = new \stdClass(); $this->addConfigurationOption("smart_errors", [
$object->id = "smart_errors"; 'value' => $value
$object->value = $value; ]);
array_push($this->configs, $object);
} }
public function setTrueClientIpHeader(bool $active) public function setTrueClientIpHeader(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("true_client_ip_header", [
$object->id = "true_client_ip_header"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setWAF(bool $active) public function setWAF(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("waf", [
$object->id = "waf"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setAutomatedHTTPSRewrites(bool $active) public function setAutomatedHTTPSRewrites(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("automatic_https_rewrites", [
$object->id = "automatic_https_rewrites"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function setOpportunisticEncryption(bool $active) public function setOpportunisticEncryption(bool $active)
{ {
$object = new \stdClass(); $this->addConfigurationOption("opportunistic_encryption", [
$object->id = "opportunistic_encryption"; 'value' => $this->getBoolAsOnOrOff($active)
$object->value = $active === true ? "on" : "off"; ]);
array_push($this->configs, $object);
} }
public function getArray(): array public function getArray(): array
{ {
return $this->configs; return $this->configs;
} }
private function addConfigurationOption(string $setting, array $configuration)
{
$configuration['id'] = $setting;
array_push($this->configs, (object) $configuration);
}
private function getBoolAsOnOrOff(bool $value): string
{
return true === $value ? 'on' : 'off';
}
} }

View File

@@ -8,7 +8,6 @@
namespace Cloudflare\API\Configurations; namespace Cloudflare\API\Configurations;
class PageRulesTargets implements Configurations class PageRulesTargets implements Configurations
{ {
private $targets; private $targets;

View File

@@ -8,10 +8,9 @@
namespace Cloudflare\API\Configurations; namespace Cloudflare\API\Configurations;
class UARules implements Configurations class UARules implements Configurations
{ {
private $configs = array(); private $configs = [];
public function addUA(string $value) public function addUA(string $value)
{ {

View File

@@ -8,10 +8,9 @@
namespace Cloudflare\API\Configurations; namespace Cloudflare\API\Configurations;
class ZoneLockdown implements Configurations class ZoneLockdown implements Configurations
{ {
private $configs = array(); private $configs = [];
public function addIP(string $value) public function addIP(string $value)
{ {

View File

@@ -7,7 +7,6 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
interface API interface API

View File

@@ -19,6 +19,17 @@ class DNS implements API
$this->adapter = $adapter; $this->adapter = $adapter;
} }
/**
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*
* @param string $zoneID
* @param string $type
* @param string $name
* @param string $content
* @param int $ttl
* @param bool $proxied
* @return bool
*/
public function addRecord( public function addRecord(
string $zoneID, string $zoneID,
string $type, string $type,
@@ -121,5 +132,4 @@ class DNS implements API
return false; return false;
} }
} }

View File

@@ -8,8 +8,6 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
class EndpointException extends \Exception class EndpointException extends \Exception
{ {
} }

View File

@@ -8,7 +8,6 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
class IPs implements API class IPs implements API
@@ -20,7 +19,8 @@ class IPs implements API
$this->adapter = $adapter; $this->adapter = $adapter;
} }
public function listIPs(): \stdClass { public function listIPs(): \stdClass
{
$ips = $this->adapter->get('ips', [], []); $ips = $this->adapter->get('ips', [], []);
$body = json_decode($ips->getBody()); $body = json_decode($ips->getBody());

View File

@@ -8,7 +8,6 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
use Cloudflare\API\Configurations\PageRulesActions; use Cloudflare\API\Configurations\PageRulesActions;
use Cloudflare\API\Configurations\PageRulesTargets; use Cloudflare\API\Configurations\PageRulesTargets;
@@ -22,6 +21,16 @@ class PageRules implements API
$this->adapter = $adapter; $this->adapter = $adapter;
} }
/**
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*
* @param string $zoneID
* @param PageRulesTargets $target
* @param PageRulesActions $actions
* @param bool $active
* @param int|null $priority
* @return bool
*/
public function createPageRule( public function createPageRule(
string $zoneID, string $zoneID,
PageRulesTargets $target, PageRulesTargets $target,

107
src/Endpoints/Railgun.php Normal file
View File

@@ -0,0 +1,107 @@
<?php
/**
* Created by PhpStorm.
* User: junade
* Date: 23/10/2017
* Time: 11:15
*/
namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter;
class Railgun implements API
{
private $adapter;
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
}
public function create(
string $name
): \stdClass {
$query = [
'name' => $name,
];
$user = $this->adapter->post('railguns', [], $query);
$body = json_decode($user->getBody());
return $body;
}
public function list(
int $page = 1,
int $perPage = 20,
string $direction = ""
): \stdClass {
$query = [
'page' => $page,
'per_page' => $perPage
];
if (!empty($direction)) {
$query['direction'] = $direction;
}
$user = $this->adapter->get('railguns', $query, []);
$body = json_decode($user->getBody());
$result = new \stdClass();
$result->result = $body->result;
$result->result_info = $body->result_info;
return $result;
}
public function get(
string $railgunID
): \stdClass {
$user = $this->adapter->get('railguns/' . $railgunID, [], []);
$body = json_decode($user->getBody());
return $body->result;
}
public function getZones(
string $railgunID
): \stdClass {
$user = $this->adapter->get('railguns/' . $railgunID . '/zones', [], []);
$body = json_decode($user->getBody());
$result = new \stdClass();
$result->result = $body->result;
$result->result_info = $body->result_info;
return $result;
}
public function update(
string $railgunID,
bool $status
): \stdClass {
$query = [
'enabled' => $status
];
$user = $this->adapter->patch('railguns/' . $railgunID, [], $query);
$body = json_decode($user->getBody());
return $body->result;
}
public function delete(
string $railgunID
): bool {
$user = $this->adapter->delete('railguns/' . $railgunID, [], []);
$body = json_decode($user->getBody());
if (isset($body->result->id)) {
return true;
}
return false;
}
}

View File

@@ -43,17 +43,16 @@ class UARules implements API
string $zoneID, string $zoneID,
string $mode, string $mode,
\Cloudflare\API\Configurations\Configurations $configuration, \Cloudflare\API\Configurations\Configurations $configuration,
string $id = null, string $ruleID = null,
string $description = null string $description = null
): bool { ): bool {
$options = [ $options = [
'mode' => $mode, 'mode' => $mode,
'configurations' => $configuration->getArray() 'configurations' => $configuration->getArray()
]; ];
if ($id !== null) { if ($ruleID !== null) {
$options['id'] = $id; $options['id'] = $ruleID;
} }
if ($description !== null) { if ($description !== null) {
@@ -85,7 +84,6 @@ class UARules implements API
\Cloudflare\API\Configurations\UARules $configuration, \Cloudflare\API\Configurations\UARules $configuration,
string $description = null string $description = null
): bool { ): bool {
$options = [ $options = [
'mode' => $mode, 'mode' => $mode,
'id' => $ruleID, 'id' => $ruleID,

View File

@@ -7,7 +7,6 @@
namespace Cloudflare\API\Endpoints; namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter; use Cloudflare\API\Adapter\Adapter;
class User implements API class User implements API

203
src/Endpoints/WAF.php Normal file
View File

@@ -0,0 +1,203 @@
<?php
/**
* Created by PhpStorm.
* User: junade
* Date: 23/10/2017
* Time: 11:17
*/
namespace Cloudflare\API\Endpoints;
use Cloudflare\API\Adapter\Adapter;
class WAF implements \Cloudflare\API\Endpoints\API
{
private $adapter;
public function __construct(Adapter $adapter)
{
$this->adapter = $adapter;
}
public function getPackages(
string $zoneID,
int $page = 1,
int $perPage = 20,
string $order = "",
string $direction = "",
string $match = "all"
): \stdClass {
$query = [
'page' => $page,
'per_page' => $perPage,
'match' => $match
];
if (!empty($order)) {
$query['order'] = $order;
}
if (!empty($direction)) {
$query['direction'] = $direction;
}
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages', $query, []);
$body = json_decode($user->getBody());
$result = new \stdClass();
$result->result = $body->result;
$result->result_info = $body->result_info;
return $result;
}
public function getPackageInfo(
string $zoneID,
string $packageID
): \stdClass {
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID, [], []);
$body = json_decode($user->getBody());
return $body->result;
}
public function getRules(
string $zoneID,
string $packageID,
int $page = 1,
int $perPage = 20,
string $order = "",
string $direction = "",
string $match = "all"
): \stdClass {
$query = [
'page' => $page,
'per_page' => $perPage,
'match' => $match
];
if (!empty($order)) {
$query['order'] = $order;
}
if (!empty($direction)) {
$query['direction'] = $direction;
}
$user = $this->adapter->get('zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules', $query, []);
$body = json_decode($user->getBody());
$result = new \stdClass();
$result->result = $body->result;
$result->result_info = $body->result_info;
return $result;
}
public function getRuleInfo(
string $zoneID,
string $packageID,
string $ruleID
): \stdClass {
$user = $this->adapter->get(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules/' . $ruleID,
[],
[]
);
$body = json_decode($user->getBody());
return $body->result;
}
public function updateRule(
string $zoneID,
string $packageID,
string $ruleID,
string $status
): \stdClass {
$query = [
'mode' => $status,
];
$user = $this->adapter->patch(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/rules/' . $ruleID,
[],
$query
);
$body = json_decode($user->getBody());
return $body->result;
}
public function getGroups(
string $zoneID,
string $packageID,
int $page = 1,
int $perPage = 20,
string $order = "",
string $direction = "",
string $match = "all"
): \stdClass {
$query = [
'page' => $page,
'per_page' => $perPage,
'match' => $match
];
if (!empty($order)) {
$query['order'] = $order;
}
if (!empty($direction)) {
$query['direction'] = $direction;
}
$user = $this->adapter->get(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups',
$query,
[]
);
$body = json_decode($user->getBody());
$result = new \stdClass();
$result->result = $body->result;
$result->result_info = $body->result_info;
return $result;
}
public function getGroupInfo(
string $zoneID,
string $packageID,
string $groupID
): \stdClass {
$user = $this->adapter->get(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups/' . $groupID,
[],
[]
);
$body = json_decode($user->getBody());
return $body->result;
}
public function updateGroup(
string $zoneID,
string $packageID,
string $groupID,
string $status
): \stdClass {
$query = [
'mode' => $status
];
$user = $this->adapter->patch(
'zones/' . $zoneID . '/firewall/waf/packages/' . $packageID . '/groups/' . $groupID,
[],
$query
);
$body = json_decode($user->getBody());
return $body->result;
}
}

View File

@@ -43,17 +43,16 @@ class ZoneLockdown implements API
string $zoneID, string $zoneID,
array $urls, array $urls,
\Cloudflare\API\Configurations\ZoneLockdown $configuration, \Cloudflare\API\Configurations\ZoneLockdown $configuration,
string $id = null, string $lockdownID = null,
string $description = null string $description = null
): bool { ): bool {
$options = [ $options = [
'urls' => $urls, 'urls' => $urls,
'configurations' => $configuration->getArray() 'configurations' => $configuration->getArray()
]; ];
if ($id !== null) { if ($lockdownID !== null) {
$options['id'] = $id; $options['id'] = $lockdownID;
} }
if ($description !== null) { if ($description !== null) {
@@ -85,7 +84,6 @@ class ZoneLockdown implements API
\Cloudflare\API\Configurations\ZoneLockdown $configuration, \Cloudflare\API\Configurations\ZoneLockdown $configuration,
string $description = null string $description = null
): bool { ): bool {
$options = [ $options = [
'urls' => $urls, 'urls' => $urls,
'id' => $lockdownID, 'id' => $lockdownID,

View File

@@ -19,6 +19,14 @@ class Zones implements API
$this->adapter = $adapter; $this->adapter = $adapter;
} }
/**
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*
* @param string $name
* @param bool $jumpstart
* @param string $organizationID
* @return \stdClass
*/
public function addZone(string $name, bool $jumpstart = false, string $organizationID = ''): \stdClass public function addZone(string $name, bool $jumpstart = false, string $organizationID = ''): \stdClass
{ {
$options = [ $options = [
@@ -119,9 +127,9 @@ class Zones implements API
return false; return false;
} }
public function cachePurge(string $zoneID, array $files = [], array $tags = []): bool public function cachePurge(string $zoneID, array $files = null, array $tags = null): bool
{ {
if (empty($files) && empty($tags)) { if (is_null($files) && is_null($tags)) {
throw new EndpointException("No files or tags to purge."); throw new EndpointException("No files or tags to purge.");
} }

View File

@@ -8,7 +8,7 @@
use GuzzleHttp\Psr7\Response; use GuzzleHttp\Psr7\Response;
class GuzzleTest extends PHPUnit_Framework_TestCase class GuzzleTest extends TestCase
{ {
private $client; private $client;
@@ -58,25 +58,31 @@ class GuzzleTest extends PHPUnit_Framework_TestCase
$this->assertEquals("application/json", $headers["Content-Type"][0]); $this->assertEquals("application/json", $headers["Content-Type"][0]);
$body = json_decode($response->getBody()); $body = json_decode($response->getBody());
$this->assertEquals("Testing a PUT request.", json_decode($body->json)->{"X-Put-Test"}); $this->assertEquals("Testing a PUT request.", $body->json->{"X-Put-Test"});
} }
public function testPatch() public function testPatch()
{ {
$response = $this->client->patch('https://httpbin.org/patch', [], $response = $this->client->patch(
['X-Patch-Test' => 'Testing a PATCH request.']); 'https://httpbin.org/patch',
[],
['X-Patch-Test' => 'Testing a PATCH request.']
);
$headers = $response->getHeaders(); $headers = $response->getHeaders();
$this->assertEquals("application/json", $headers["Content-Type"][0]); $this->assertEquals("application/json", $headers["Content-Type"][0]);
$body = json_decode($response->getBody()); $body = json_decode($response->getBody());
$this->assertEquals("Testing a PATCH request.", json_decode($body->json)->{"X-Patch-Test"}); $this->assertEquals("Testing a PATCH request.", $body->json->{"X-Patch-Test"});
} }
public function testDelete() public function testDelete()
{ {
$response = $this->client->delete('https://httpbin.org/delete', [], $response = $this->client->delete(
['X-Delete-Test' => 'Testing a DELETE request.']); 'https://httpbin.org/delete',
[],
['X-Delete-Test' => 'Testing a DELETE request.']
);
$headers = $response->getHeaders(); $headers = $response->getHeaders();
$this->assertEquals("application/json", $headers["Content-Type"][0]); $this->assertEquals("application/json", $headers["Content-Type"][0]);
@@ -124,9 +130,9 @@ class GuzzleTest extends PHPUnit_Framework_TestCase
$method->invokeArgs($this->client, [$response]); $method->invokeArgs($this->client, [$response]);
} }
public function testNotFound() { public function testNotFound()
{
$this->expectException(\GuzzleHttp\Exception\RequestException::class); $this->expectException(\GuzzleHttp\Exception\RequestException::class);
$response = $this->client->get('https://httpbin.org/status/404'); $this->client->get('https://httpbin.org/status/404');
} }
} }

View File

@@ -5,7 +5,7 @@
* Date: 13/01/2017 * Date: 13/01/2017
* Time: 17:15 * Time: 17:15
*/ */
class APIKeyTest extends PHPUnit_Framework_TestCase class APIKeyTest extends TestCase
{ {
public function testGetHeaders() public function testGetHeaders()
{ {
@@ -19,6 +19,5 @@ class APIKeyTest extends PHPUnit_Framework_TestCase
$this->assertEquals('1234567893feefc5f0q5000bfo0c38d90bbeb', $headers['X-Auth-Key']); $this->assertEquals('1234567893feefc5f0q5000bfo0c38d90bbeb', $headers['X-Auth-Key']);
$this->assertEquals(2, sizeof($headers)); $this->assertEquals(2, sizeof($headers));
} }
} }

View File

@@ -8,7 +8,7 @@
use Cloudflare\API\Auth\None; use Cloudflare\API\Auth\None;
class NoneTest extends PHPUnit_Framework_TestCase class NoneTest extends TestCase
{ {
public function testGetHeaders() public function testGetHeaders()
{ {

View File

@@ -5,7 +5,7 @@
* Date: 13/01/2017 * Date: 13/01/2017
* Time: 18:03 * Time: 18:03
*/ */
class UserServiceKeyTest extends PHPUnit_Framework_TestCase class UserServiceKeyTest extends TestCase
{ {
public function testGetHeaders() public function testGetHeaders()
{ {
@@ -14,10 +14,11 @@ class UserServiceKeyTest extends PHPUnit_Framework_TestCase
$this->assertArrayHasKey('X-Auth-User-Service-Key', $headers); $this->assertArrayHasKey('X-Auth-User-Service-Key', $headers);
$this->assertEquals('v1.0-e24fd090c02efcfecb4de8f4ff246fd5c75b48946fdf0ce26c59f91d0d90797b-cfa33fe60e8e34073c149323454383fc9005d25c9b4c502c2f063457ef65322eade065975001a0b4b4c591c5e1bd36a6e8f7e2d4fa8a9ec01c64c041e99530c2-07b9efe0acd78c82c8d9c690aacb8656d81c369246d7f996a205fe3c18e9254a', $this->assertEquals(
$headers['X-Auth-User-Service-Key']); 'v1.0-e24fd090c02efcfecb4de8f4ff246fd5c75b48946fdf0ce26c59f91d0d90797b-cfa33fe60e8e34073c149323454383fc9005d25c9b4c502c2f063457ef65322eade065975001a0b4b4c591c5e1bd36a6e8f7e2d4fa8a9ec01c64c041e99530c2-07b9efe0acd78c82c8d9c690aacb8656d81c369246d7f996a205fe3c18e9254a',
$headers['X-Auth-User-Service-Key']
);
$this->assertEquals(1, sizeof($headers)); $this->assertEquals(1, sizeof($headers));
} }
} }

View File

@@ -6,7 +6,7 @@
* Date: 19/09/2017 * Date: 19/09/2017
* Time: 15:24 * Time: 15:24
*/ */
class ConfigurationsUARulesTest extends PHPUnit_Framework_TestCase class ConfigurationsUARulesTest extends TestCase
{ {
public function testGetArray() public function testGetArray()
{ {
@@ -19,7 +19,9 @@ class ConfigurationsUARulesTest extends PHPUnit_Framework_TestCase
$this->assertObjectHasAttribute('target', $array[0]); $this->assertObjectHasAttribute('target', $array[0]);
$this->assertEquals('ua', $array[0]->target); $this->assertEquals('ua', $array[0]->target);
$this->assertObjectHasAttribute('value', $array[0]); $this->assertObjectHasAttribute('value', $array[0]);
$this->assertEquals('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4', $this->assertEquals(
$array[0]->value); 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4',
$array[0]->value
);
} }
} }

View File

@@ -8,9 +8,10 @@
use Cloudflare\API\Configurations\PageRulesTargets; use Cloudflare\API\Configurations\PageRulesTargets;
class PageRulesTargetTest extends PHPUnit_Framework_TestCase class PageRulesTargetTest extends TestCase
{ {
public function testGetArray() { public function testGetArray()
{
$targets = new PageRulesTargets('junade.com/*'); $targets = new PageRulesTargets('junade.com/*');
$array = $targets->getArray(); $array = $targets->getArray();

View File

@@ -6,7 +6,7 @@
* Date: 05/09/2017 * Date: 05/09/2017
* Time: 13:50 * Time: 13:50
*/ */
class ConfigurationZoneLockdownTest extends PHPUnit_Framework_TestCase class ConfigurationZoneLockdownTest extends TestCase
{ {
public function testGetArray() public function testGetArray()
{ {

View File

@@ -6,38 +6,20 @@
* Date: 09/06/2017 * Date: 09/06/2017
* Time: 15:31 * Time: 15:31
*/ */
class DNSTest extends PHPUnit_Framework_TestCase class DNSTest extends TestCase
{ {
public function testAddRecord() public function testAddRecord()
{ {
$stream = GuzzleHttp\Psr7\stream_for(' $response = $this->getPsr7JsonResponseForFixture('Endpoints/addRecord.json');
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"type": "A",
"name": "example.com",
"content": "1.2.3.4",
"proxiable": true,
"proxied": false,
"ttl": 120,
"locked": false,
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
"zone_name": "example.com",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"data": {}
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response); $mock->method('post')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('post') ->method('post')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'), $this->equalTo([]), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'type' => 'A', 'type' => 'A',
'name' => 'example.com', 'name' => 'example.com',
@@ -53,42 +35,15 @@ class DNSTest extends PHPUnit_Framework_TestCase
public function testListRecords() public function testListRecords()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/listRecords.json');
"success": true,
"errors": [],
"messages": [],
"result": [
{
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"type": "A",
"name": "example.com",
"content": "1.2.3.4",
"proxiable": true,
"proxied": false,
"ttl": 120,
"locked": false,
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
"zone_name": "example.com",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"data": {}
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records'),
$this->equalTo([ $this->equalTo([
'page' => 1, 'page' => 1,
'per_page' => 20, 'per_page' => 20,
@@ -102,7 +57,7 @@ class DNSTest extends PHPUnit_Framework_TestCase
); );
$zones = new \Cloudflare\API\Endpoints\DNS($mock); $zones = new \Cloudflare\API\Endpoints\DNS($mock);
$result = $zones->listRecords("023e105f4ecef8ad9ca31a8372d0c353","A", "example.com", "127.0.0.1", 1, 20, "type", "desc", "all"); $result = $zones->listRecords("023e105f4ecef8ad9ca31a8372d0c353", "A", "example.com", "127.0.0.1", 1, 20, "type", "desc", "all");
$this->assertObjectHasAttribute('result', $result); $this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result); $this->assertObjectHasAttribute('result_info', $result);
@@ -111,36 +66,17 @@ class DNSTest extends PHPUnit_Framework_TestCase
$this->assertEquals(1, $result->result_info->page); $this->assertEquals(1, $result->result_info->page);
} }
public function testGetRecordDetails() public function testGetDNSRecordDetails()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/getDNSRecordDetails.json');
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"type": "A",
"name": "example.com",
"content": "1.2.3.4",
"proxiable": true,
"proxied": false,
"ttl": 120,
"locked": false,
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
"zone_name": "example.com",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"data": {}
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59'), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]) $this->equalTo([])
); );
@@ -149,4 +85,37 @@ class DNSTest extends PHPUnit_Framework_TestCase
$this->assertEquals("372e67954025e0ba6aaa6d586b9e0b59", $result->id); $this->assertEquals("372e67954025e0ba6aaa6d586b9e0b59", $result->id);
} }
public function testUpdateDNSRecord()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateDNSRecord.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('put')->willReturn($response);
$details = [
'type' => 'A',
'name' => "example.com",
'content' => "1.2.3.4",
'ttl' => 120,
'proxied' => false,
];
$mock->expects($this->once())
->method('put')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/dns_records/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]),
$this->equalTo($details)
);
$dns = new \Cloudflare\API\Endpoints\DNS($mock);
$result = $dns->updateRecordDetails("023e105f4ecef8ad9ca31a8372d0c353", "372e67954025e0ba6aaa6d586b9e0b59", $details);
$this->assertEquals("372e67954025e0ba6aaa6d586b9e0b59", $result->result->id);
foreach ($details as $property => $value) {
$this->assertEquals($result->result->{ $property }, $value);
}
}
} }

View File

@@ -8,30 +8,20 @@
use Cloudflare\API\Endpoints\IPs; use Cloudflare\API\Endpoints\IPs;
class IPsTest extends PHPUnit_Framework_TestCase class IPsTest extends TestCase
{ {
public function testListIPs() { public function testListIPs()
$stream = GuzzleHttp\Psr7\stream_for(' {
{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/listIPs.json');
"success": true,
"errors": [],
"messages": [],
"result": {
"ipv4_cidrs": [
"199.27.128.0/21"
],
"ipv6_cidrs": [
"2400:cb00::/32"
]
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('ips'), $this->equalTo([]) ->with(
$this->equalTo('ips'),
$this->equalTo([])
); );
$ips = new \Cloudflare\API\Endpoints\IPs($mock); $ips = new \Cloudflare\API\Endpoints\IPs($mock);

View File

@@ -8,52 +8,24 @@
use Cloudflare\API\Adapter\PageRules; use Cloudflare\API\Adapter\PageRules;
class PageRulesTest extends PHPUnit_Framework_TestCase class PageRulesTest extends TestCase
{ {
public function testCreatePageRule() public function testCreatePageRule()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "9a7806061c88ada191ed06f989cc3dac",
"targets": [
{
"target": "url",
"constraint": {
"operator": "matches",
"value": "*example.com/images/*"
}
}
],
"actions": [
{
"id": "always_online",
"value": "on"
}
],
"priority": 1,
"status": "active",
"modified_on": "2014-01-01T05:20:00.12345Z",
"created_on": "2014-01-01T05:20:00.12345Z"
}
}');
$target = new \Cloudflare\API\Configurations\PageRulesTargets('*example.com/images/*'); $target = new \Cloudflare\API\Configurations\PageRulesTargets('*example.com/images/*');
$action = new \Cloudflare\API\Configurations\PageRulesActions(); $action = new \Cloudflare\API\Configurations\PageRulesActions();
$action->setAlwaysOnline(true); $action->setAlwaysOnline(true);
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream); $response = $this->getPsr7JsonResponseForFixture('Endpoints/createPageRule.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response); $mock->method('post')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('post') ->method('post')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'), $this->equalTo([]), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'targets' => $target->getArray(), 'targets' => $target->getArray(),
'actions' => $action->getArray(), 'actions' => $action->getArray(),
@@ -62,61 +34,23 @@ class PageRulesTest extends PHPUnit_Framework_TestCase
]) ])
); );
$pr = new \Cloudflare\API\Endpoints\PageRules($mock); $pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$result = $pr->createPageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1); $result = $pageRules->createPageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1);
$this->assertTrue($result); $this->assertTrue($result);
} }
public function testListPageRules() public function testListPageRules()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/listPageRules.json');
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": [
{
"id": "9a7806061c88ada191ed06f989cc3dac",
"targets": [
{
"target": "url",
"constraint": {
"operator": "matches",
"value": "*example.com/images/*"
}
}
],
"actions": [
{
"id": "always_online",
"value": "on"
}
],
"priority": 1,
"status": "active",
"modified_on": "2014-01-01T05:20:00.12345Z",
"created_on": "2014-01-01T05:20:00.12345Z"
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
$this->equalTo([ $this->equalTo([
'status' => 'active', 'status' => 'active',
'order' => 'status', 'order' => 'status',
@@ -126,101 +60,44 @@ class PageRulesTest extends PHPUnit_Framework_TestCase
$this->equalTo([]) $this->equalTo([])
); );
$pr = new \Cloudflare\API\Endpoints\PageRules($mock); $pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$pr->listPageRules('023e105f4ecef8ad9ca31a8372d0c353', 'active', 'status', 'desc', 'all'); $pageRules->listPageRules('023e105f4ecef8ad9ca31a8372d0c353', 'active', 'status', 'desc', 'all');
} }
public function testGetPageRuleDetails() public function testGetPageRuleDetails()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/getPageRuleDetails.json');
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "9a7806061c88ada191ed06f989cc3dac",
"targets": [
{
"target": "url",
"constraint": {
"operator": "matches",
"value": "*example.com/images/*"
}
}
],
"actions": [
{
"id": "always_online",
"value": "on"
}
],
"priority": 1,
"status": "active",
"modified_on": "2014-01-01T05:20:00.12345Z",
"created_on": "2014-01-01T05:20:00.12345Z"
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'), $this->equalTo([]) ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'),
$this->equalTo([])
); );
$pr = new \Cloudflare\API\Endpoints\PageRules($mock); $pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$pr->getPageRuleDetails('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac'); $pageRules->getPageRuleDetails('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac');
} }
public function testUpdatePageRule() public function testUpdatePageRule()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "9a7806061c88ada191ed06f989cc3dac",
"targets": [
{
"target": "url",
"constraint": {
"operator": "matches",
"value": "*example.com/images/*"
}
}
],
"actions": [
{
"id": "always_online",
"value": "on"
}
],
"priority": 1,
"status": "active",
"modified_on": "2014-01-01T05:20:00.12345Z",
"created_on": "2014-01-01T05:20:00.12345Z"
}
}');
$target = new \Cloudflare\API\Configurations\PageRulesTargets('*example.com/images/*'); $target = new \Cloudflare\API\Configurations\PageRulesTargets('*example.com/images/*');
$action = new \Cloudflare\API\Configurations\PageRulesActions(); $action = new \Cloudflare\API\Configurations\PageRulesActions();
$action->setAlwaysOnline(true); $action->setAlwaysOnline(true);
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream); $response = $this->getPsr7JsonResponseForFixture('Endpoints/updatePageRule.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('patch')->willReturn($response); $mock->method('patch')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('patch') ->method('patch')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'), $this->equalTo([]), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'targets' => $target->getArray(), 'targets' => $target->getArray(),
'actions' => $action->getArray(), 'actions' => $action->getArray(),
@@ -229,39 +106,29 @@ class PageRulesTest extends PHPUnit_Framework_TestCase
]) ])
); );
$pr = new \Cloudflare\API\Endpoints\PageRules($mock); $pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$result = $pr->updatePageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1); $result = $pageRules->updatePageRule('023e105f4ecef8ad9ca31a8372d0c353', $target, $action, true, 1);
$this->assertTrue($result); $this->assertTrue($result);
} }
public function testDeletePageRule() public function testDeletePageRule()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/deletePageRule.json');
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "9a7806061c88ada191ed06f989cc3dac"
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('delete')->willReturn($response); $mock->method('delete')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('delete') ->method('delete')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'), $this->equalTo([]), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/pagerules/9a7806061c88ada191ed06f989cc3dac'),
$this->equalTo([]),
$this->equalTo([]) $this->equalTo([])
); );
$pr = new \Cloudflare\API\Endpoints\PageRules($mock); $pageRules = new \Cloudflare\API\Endpoints\PageRules($mock);
$result = $pr->deletePageRule('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac'); $result = $pageRules->deletePageRule('023e105f4ecef8ad9ca31a8372d0c353', '9a7806061c88ada191ed06f989cc3dac');
$this->assertTrue($result); $this->assertTrue($result);
} }

View File

@@ -0,0 +1,153 @@
<?php
/**
* Created by PhpStorm.
* User: junade
* Date: 23/10/2017
* Time: 11:20
*/
use Cloudflare\API\Endpoints\Railgun;
class RailgunTest extends TestCase
{
public function testcreate()
{
$details = [
'name' => "My Railgun",
];
$response = $this->getPsr7JsonResponseForFixture('Endpoints/createRailgun.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response);
$mock->expects($this->once())
->method('post')
->with(
$this->equalTo('railguns'),
$this->equalTo([]),
$this->equalTo(['name' => $details['name']])
);
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
$result = $railgun->create($details['name']);
$this->assertObjectHasAttribute('result', $result);
foreach ($details as $property => $value) {
$this->assertEquals($result->result->{ $property }, $value);
}
}
public function testlist()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listRailguns.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response);
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('railguns'),
$this->equalTo([
'page' => 1,
'per_page' => 20,
'direction' => 'desc'
]),
$this->equalTo([])
);
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
$result = $railgun->list(1, 20, "desc");
$this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result);
}
public function testget()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getRailgun.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response);
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448'),
$this->equalTo([])
);
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
$result = $railgun->get("e928d310693a83094309acf9ead50448");
$this->assertEquals("e928d310693a83094309acf9ead50448", $result->id);
}
public function testgetZones()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listRailgunZones.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response);
$mock->expects($this->once())
->method('get')
->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448/zones'),
$this->equalTo([]),
$this->equalTo([])
);
$railgun = new \Cloudflare\API\Endpoints\Railgun($mock);
$result = $railgun->getZones("e928d310693a83094309acf9ead50448");
$this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result);
}
public function testupdate()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updateRailgun.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('patch')->willReturn($response);
$details = [
'enabled' => true,
];
$mock->expects($this->once())
->method('patch')
->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448'),
$this->equalTo([]),
$this->equalTo($details)
);
$waf = new \Cloudflare\API\Endpoints\Railgun($mock);
$result = $waf->update("e928d310693a83094309acf9ead50448", true);
$this->assertEquals("e928d310693a83094309acf9ead50448", $result->id);
}
public function testdelete()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteRailgun.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('delete')->willReturn($response);
$mock->expects($this->once())
->method('delete')
->with(
$this->equalTo('railguns/e928d310693a83094309acf9ead50448'),
$this->equalTo([]),
$this->equalTo([])
);
$waf = new \Cloudflare\API\Endpoints\Railgun($mock);
$waf->delete("e928d310693a83094309acf9ead50448");
}
}

View File

@@ -6,46 +6,19 @@
* Time: 15:19 * Time: 15:19
*/ */
use Cloudflare\API\Endpoints\UARules; class UARulesTest extends TestCase
class UARulesTest extends PHPUnit_Framework_TestCase
{ {
public function testListRules() public function testListRules()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/listRules.json');
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": [
{
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack",
"mode": "js_challenge",
"configuration": {
"target": "ua",
"value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4"
}
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules'), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules'),
$this->equalTo([ $this->equalTo([
'page' => 1, 'page' => 1,
'per_page' => 20 'per_page' => 20
@@ -68,32 +41,16 @@ class UARulesTest extends PHPUnit_Framework_TestCase
$config = new \Cloudflare\API\Configurations\UARules(); $config = new \Cloudflare\API\Configurations\UARules();
$config->addUA('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4'); $config->addUA('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4');
$stream = GuzzleHttp\Psr7\stream_for(' $response = $this->getPsr7JsonResponseForFixture('Endpoints/createRule.json');
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack",
"mode": "js_challenge",
"configuration": {
"target": "ua",
"value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4"
}
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response); $mock->method('post')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('post') ->method('post')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules'), $this->equalTo([]), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'mode' => 'js_challenge', 'mode' => 'js_challenge',
'id' => '372e67954025e0ba6aaa6d586b9e0b59', 'id' => '372e67954025e0ba6aaa6d586b9e0b59',
@@ -102,40 +59,27 @@ class UARulesTest extends PHPUnit_Framework_TestCase
]) ])
); );
$ld = new \Cloudflare\API\Endpoints\UARules($mock); $rules = new \Cloudflare\API\Endpoints\UARules($mock);
$ld->createRule('023e105f4ecef8ad9ca31a8372d0c353', 'js_challenge', $config, $rules->createRule(
'023e105f4ecef8ad9ca31a8372d0c353',
'js_challenge',
$config,
'372e67954025e0ba6aaa6d586b9e0b59', '372e67954025e0ba6aaa6d586b9e0b59',
'Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack'); 'Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack'
);
} }
public function getRuleDetails() public function getRuleDetails()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/getRuleDetails.json');
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack",
"mode": "js_challenge",
"configuration": {
"target": "ua",
"value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4"
}
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]) $this->equalTo([])
); );
@@ -150,32 +94,15 @@ class UARulesTest extends PHPUnit_Framework_TestCase
$config = new \Cloudflare\API\Configurations\UARules(); $config = new \Cloudflare\API\Configurations\UARules();
$config->addUA('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4'); $config->addUA('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4');
$stream = GuzzleHttp\Psr7\stream_for(' $response = $this->getPsr7JsonResponseForFixture('Endpoints/updateRule.json');
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack",
"mode": "js_challenge",
"configuration": {
"target": "ua",
"value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4"
}
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('put')->willReturn($response); $mock->method('put')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('put') ->method('put')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]), $this->equalTo([]),
$this->equalTo([ $this->equalTo([
'mode' => 'js_challenge', 'mode' => 'js_challenge',
@@ -185,38 +112,32 @@ class UARulesTest extends PHPUnit_Framework_TestCase
]) ])
); );
$ld = new \Cloudflare\API\Endpoints\UARules($mock); $rules = new \Cloudflare\API\Endpoints\UARules($mock);
$ld->updateRule('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59', $rules->updateRule(
'js_challenge', $config, '023e105f4ecef8ad9ca31a8372d0c353',
'Restrict access to these endpoints to requests from a known IP address'); '372e67954025e0ba6aaa6d586b9e0b59',
'js_challenge',
$config,
'Restrict access to these endpoints to requests from a known IP address'
);
} }
public function testDeleteRule() public function testDeleteRule()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteRule.json');
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59"
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('delete')->willReturn($response); $mock->method('delete')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('delete') ->method('delete')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/ua_rules/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]), $this->equalTo([]),
$this->equalTo([]) $this->equalTo([])
); );
$ld = new \Cloudflare\API\Endpoints\UARules($mock); $rules = new \Cloudflare\API\Endpoints\UARules($mock);
$ld->deleteRule('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59'); $rules->deleteRule('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
} }
} }

View File

@@ -5,30 +5,12 @@
* Date: 01/02/2017 * Date: 01/02/2017
* Time: 12:50 * Time: 12:50
*/ */
class UserTest extends PHPUnit_Framework_TestCase class UserTest extends TestCase
{ {
public function testGetUserDetails() public function testGetUserDetails()
{ {
$stream = GuzzleHttp\Psr7\stream_for(' $response = $this->getPsr7JsonResponseForFixture('Endpoints/getUserDetails.json');
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"first_name": "John",
"last_name": "Appleseed",
"username": "cfuser12345",
"telephone": "+1 123-123-1234",
"country": "US",
"zipcode": "12345",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z",
"two_factor_authentication_enabled": false
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
@@ -43,26 +25,8 @@ class UserTest extends PHPUnit_Framework_TestCase
public function testGetUserID() public function testGetUserID()
{ {
$stream = GuzzleHttp\Psr7\stream_for(' $response = $this->getPsr7JsonResponseForFixture('Endpoints/getUserId.json');
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"first_name": "John",
"last_name": "Appleseed",
"username": "cfuser12345",
"telephone": "+1 123-123-1234",
"country": "US",
"zipcode": "12345",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z",
"two_factor_authentication_enabled": false
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
@@ -72,26 +36,8 @@ class UserTest extends PHPUnit_Framework_TestCase
public function testGetUserEmail() public function testGetUserEmail()
{ {
$stream = GuzzleHttp\Psr7\stream_for(' $response = $this->getPsr7JsonResponseForFixture('Endpoints/getUserEmail.json');
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"first_name": "John",
"last_name": "Appleseed",
"username": "cfuser12345",
"telephone": "+1 123-123-1234",
"country": "US",
"zipcode": "12345",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z",
"two_factor_authentication_enabled": false
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
@@ -103,26 +49,8 @@ class UserTest extends PHPUnit_Framework_TestCase
public function testUpdateUserDetails() public function testUpdateUserDetails()
{ {
$stream = GuzzleHttp\Psr7\stream_for(' $response = $this->getPsr7JsonResponseForFixture('Endpoints/updateUserDetails.json');
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"first_name": "John",
"last_name": "Appleseed",
"username": "cfuser12345",
"telephone": "+1 123-123-1234",
"country": "US",
"zipcode": "12345",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z",
"two_factor_authentication_enabled": false
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('patch')->willReturn($response); $mock->method('patch')->willReturn($response);

223
tests/Endpoints/WAFTest.php Normal file
View File

@@ -0,0 +1,223 @@
<?php
/**
* Created by PhpStorm.
* User: junade
* Date: 23/10/2017
* Time: 13:34
*/
use Cloudflare\API\Endpoints\WAF;
class WAFTest extends TestCase
{
public function testgetPackages()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listPackages.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/waf/packages'),
$this->equalTo([
'page' => 1,
'per_page' => 20,
'match' => 'all',
'order' => 'status',
'direction' => 'desc'
]),
$this->equalTo([])
);
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
$result = $waf->getPackages("023e105f4ecef8ad9ca31a8372d0c353", 1, 20, "status", "desc", "all");
$this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result);
$this->assertEquals("a25a9a7e9c00afc1fb2e0245519d725b", $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
}
public function testgetPackageInfo()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getPackageInfo.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/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b'),
$this->equalTo([])
);
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
$result = $waf->getPackageInfo("023e105f4ecef8ad9ca31a8372d0c353", "a25a9a7e9c00afc1fb2e0245519d725b");
$this->assertEquals("a25a9a7e9c00afc1fb2e0245519d725b", $result->id);
}
public function testgetRules()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listPackageRules.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/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/rules'),
$this->equalTo([
'page' => 1,
'per_page' => 20,
'match' => 'all',
'order' => 'status',
'direction' => 'desc'
]),
$this->equalTo([])
);
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
$result = $waf->getRules("023e105f4ecef8ad9ca31a8372d0c353", "a25a9a7e9c00afc1fb2e0245519d725b", 1, 20, "status", "desc", "all");
$this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result);
$this->assertEquals("92f17202ed8bd63d69a66b86a49a8f6b", $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
}
public function testgetRuleInfo()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getPackageRuleInfo.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/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/rules/f939de3be84e66e757adcdcb87908023'),
$this->equalTo([])
);
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
$result = $waf->getRuleInfo("023e105f4ecef8ad9ca31a8372d0c353", "a25a9a7e9c00afc1fb2e0245519d725b", "f939de3be84e66e757adcdcb87908023");
$this->assertEquals("f939de3be84e66e757adcdcb87908023", $result->id);
}
public function testupdateRule()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updatePackageRule.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('patch')->willReturn($response);
$details = [
'mode' => "on",
];
$mock->expects($this->once())
->method('patch')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/rules/f939de3be84e66e757adcdcb87908023'),
$this->equalTo([]),
$this->equalTo($details)
);
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
$result = $waf->updateRule("023e105f4ecef8ad9ca31a8372d0c353", "a25a9a7e9c00afc1fb2e0245519d725b", "f939de3be84e66e757adcdcb87908023", "on");
$this->assertEquals("f939de3be84e66e757adcdcb87908023", $result->id);
foreach ($details as $property => $value) {
$this->assertEquals($result->{ $property }, $value);
}
}
public function getGroups()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/listPackageGroups.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/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/groups'),
$this->equalTo([
'page' => 1,
'per_page' => 20,
'match' => 'all',
'order' => 'status',
'direction' => 'desc'
]),
$this->equalTo([])
);
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
$result = $waf->getGroups("023e105f4ecef8ad9ca31a8372d0c353", "a25a9a7e9c00afc1fb2e0245519d725b", 1, 20, "status", "desc", "all");
$this->assertObjectHasAttribute('result', $result);
$this->assertObjectHasAttribute('result_info', $result);
$this->assertEquals("de677e5818985db1285d0e80225f06e5", $result->result[0]->id);
$this->assertEquals(1, $result->result_info->page);
}
public function testgetGroupInfo()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/getPackageGroupInfo.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/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/groups/de677e5818985db1285d0e80225f06e5'),
$this->equalTo([])
);
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
$result = $waf->getGroupInfo("023e105f4ecef8ad9ca31a8372d0c353", "a25a9a7e9c00afc1fb2e0245519d725b", "de677e5818985db1285d0e80225f06e5");
$this->assertEquals("de677e5818985db1285d0e80225f06e5", $result->id);
}
public function testupdateGroup()
{
$response = $this->getPsr7JsonResponseForFixture('Endpoints/updatePackageGroup.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('patch')->willReturn($response);
$details = [
'mode' => "off",
];
$mock->expects($this->once())
->method('patch')
->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/waf/packages/a25a9a7e9c00afc1fb2e0245519d725b/groups/de677e5818985db1285d0e80225f06e5'),
$this->equalTo([]),
$this->equalTo($details)
);
$waf = new \Cloudflare\API\Endpoints\WAF($mock);
$result = $waf->updateGroup("023e105f4ecef8ad9ca31a8372d0c353", "a25a9a7e9c00afc1fb2e0245519d725b", "de677e5818985db1285d0e80225f06e5", "off");
$this->assertEquals("de677e5818985db1285d0e80225f06e5", $result->id);
foreach ($details as $property => $value) {
$this->assertEquals($result->{ $property }, $value);
}
}
}

View File

@@ -6,44 +6,19 @@
* Date: 04/09/2017 * Date: 04/09/2017
* Time: 21:23 * Time: 21:23
*/ */
class ZoneLockdownTest extends PHPUnit_Framework_TestCase class ZoneLockdownTest extends TestCase
{ {
public function testListLockdowns() public function testListLockdowns()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/listLockdowns.json');
"success": true,
"errors": [],
"messages": [],
"result": [
{
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Restrict access to these endpoints to requests from a known IP address",
"urls": [
"api.mysite.com/some/endpoint*"
],
"configurations": [
{
"target": "ip",
"value": "1.2.3.4"
}
]
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'),
$this->equalTo([ $this->equalTo([
'page' => 1, 'page' => 1,
'per_page' => 20, 'per_page' => 20,
@@ -66,32 +41,16 @@ class ZoneLockdownTest extends PHPUnit_Framework_TestCase
$config = new \Cloudflare\API\Configurations\ZoneLockdown(); $config = new \Cloudflare\API\Configurations\ZoneLockdown();
$config->addIP('1.2.3.4'); $config->addIP('1.2.3.4');
$stream = GuzzleHttp\Psr7\stream_for(' $response = $this->getPsr7JsonResponseForFixture('Endpoints/addLockdown.json');
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Restrict access to these endpoints to requests from a known IP address",
"urls": [
"api.mysite.com/some/endpoint*"
],
"configurations": [
{
"target": "ip",
"value": "1.2.3.4"
}
]
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response); $mock->method('post')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('post') ->method('post')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'), $this->equalTo([]), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns'),
$this->equalTo([]),
$this->equalTo([ $this->equalTo([
'urls' => ["api.mysite.com/some/endpoint*"], 'urls' => ["api.mysite.com/some/endpoint*"],
'id' => '372e67954025e0ba6aaa6d586b9e0b59', 'id' => '372e67954025e0ba6aaa6d586b9e0b59',
@@ -100,44 +59,27 @@ class ZoneLockdownTest extends PHPUnit_Framework_TestCase
]) ])
); );
$ld = new \Cloudflare\API\Endpoints\ZoneLockdown($mock); $zoneLockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
$ld->createLockdown('023e105f4ecef8ad9ca31a8372d0c353', ["api.mysite.com/some/endpoint*"], $config, $zoneLockdown->createLockdown(
'023e105f4ecef8ad9ca31a8372d0c353',
["api.mysite.com/some/endpoint*"],
$config,
'372e67954025e0ba6aaa6d586b9e0b59', '372e67954025e0ba6aaa6d586b9e0b59',
'Restrict access to these endpoints to requests from a known IP address'); 'Restrict access to these endpoints to requests from a known IP address'
);
} }
public function testGetRecordDetails() public function testGetRecordDetails()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/getRecordDetails.json');
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Restrict access to these endpoints to requests from a known IP address",
"urls": [
"api.mysite.com/some/endpoint*"
],
"configurations": [
{
"target": "ip",
"value": "1.2.3.4"
}
]
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]) $this->equalTo([])
); );
@@ -152,36 +94,15 @@ class ZoneLockdownTest extends PHPUnit_Framework_TestCase
$config = new \Cloudflare\API\Configurations\ZoneLockdown(); $config = new \Cloudflare\API\Configurations\ZoneLockdown();
$config->addIP('1.2.3.4'); $config->addIP('1.2.3.4');
$stream = GuzzleHttp\Psr7\stream_for(' $response = $this->getPsr7JsonResponseForFixture('Endpoints/updateLockdown.json');
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Restrict access to these endpoints to requests from a known IP address",
"urls": [
"api.mysite.com/some/endpoint*"
],
"configurations": [
{
"target": "ip",
"value": "1.2.3.4"
}
]
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('put')->willReturn($response); $mock->method('put')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('put') ->method('put')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]), $this->equalTo([]),
$this->equalTo([ $this->equalTo([
'urls' => ["api.mysite.com/some/endpoint*"], 'urls' => ["api.mysite.com/some/endpoint*"],
@@ -191,10 +112,14 @@ class ZoneLockdownTest extends PHPUnit_Framework_TestCase
]) ])
); );
$ld = new \Cloudflare\API\Endpoints\ZoneLockdown($mock); $zoneLockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
$ld->updateLockdown('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59', $zoneLockdown->updateLockdown(
["api.mysite.com/some/endpoint*"], $config, '023e105f4ecef8ad9ca31a8372d0c353',
'Restrict access to these endpoints to requests from a known IP address'); '372e67954025e0ba6aaa6d586b9e0b59',
["api.mysite.com/some/endpoint*"],
$config,
'Restrict access to these endpoints to requests from a known IP address'
);
} }
public function testDeleteLockdown() public function testDeleteLockdown()
@@ -202,31 +127,20 @@ class ZoneLockdownTest extends PHPUnit_Framework_TestCase
$config = new \Cloudflare\API\Configurations\ZoneLockdown(); $config = new \Cloudflare\API\Configurations\ZoneLockdown();
$config->addIP('1.2.3.4'); $config->addIP('1.2.3.4');
$stream = GuzzleHttp\Psr7\stream_for(' $response = $this->getPsr7JsonResponseForFixture('Endpoints/deleteLockdown.json');
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59"
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('delete')->willReturn($response); $mock->method('delete')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('delete') ->method('delete')
->with($this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'), ->with(
$this->equalTo('zones/023e105f4ecef8ad9ca31a8372d0c353/firewall/lockdowns/372e67954025e0ba6aaa6d586b9e0b59'),
$this->equalTo([]), $this->equalTo([]),
$this->equalTo([]) $this->equalTo([])
); );
$ld = new \Cloudflare\API\Endpoints\ZoneLockdown($mock); $zoneLockdown = new \Cloudflare\API\Endpoints\ZoneLockdown($mock);
$ld->deleteLockdown('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59'); $zoneLockdown->deleteLockdown('023e105f4ecef8ad9ca31a8372d0c353', '372e67954025e0ba6aaa6d586b9e0b59');
} }
} }

View File

@@ -6,71 +6,19 @@
* Date: 06/06/2017 * Date: 06/06/2017
* Time: 16:01 * Time: 16:01
*/ */
class ZonesTest extends PHPUnit_Framework_TestCase class ZonesTest extends TestCase
{ {
public function testAddZone() public function testAddZone()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/addZone.json');
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"name": "example.com",
"development_mode": 7200,
"original_name_servers": [
"ns1.originaldnshost.com",
"ns2.originaldnshost.com"
],
"original_registrar": "GoDaddy",
"original_dnshost": "NameCheap",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"name_servers": [
"tony.ns.cloudflare.com",
"woz.ns.cloudflare.com"
],
"owner": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"owner_type": "user"
},
"permissions": [
"#zone:read",
"#zone:edit"
],
"plan": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"plan_pending": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"status": "active",
"paused": false,
"type": "full"
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response); $mock->method('post')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('post') ->method('post')
->with($this->equalTo('zones'), ->with(
$this->equalTo('zones'),
$this->equalTo([]), $this->equalTo([]),
$this->equalTo(['name' => 'example.com', 'jumpstart' => false]) $this->equalTo(['name' => 'example.com', 'jumpstart' => false])
); );
@@ -81,7 +29,8 @@ class ZonesTest extends PHPUnit_Framework_TestCase
$this->assertObjectHasAttribute("id", $result); $this->assertObjectHasAttribute("id", $result);
$this->assertEquals("023e105f4ecef8ad9ca31a8372d0c353", $result->id); $this->assertEquals("023e105f4ecef8ad9ca31a8372d0c353", $result->id);
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream); $response = $this->getPsr7JsonResponseForFixture('Endpoints/createPageRule.json');
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('post')->willReturn($response); $mock->method('post')->willReturn($response);
@@ -90,7 +39,8 @@ class ZonesTest extends PHPUnit_Framework_TestCase
$mock->expects($this->once()) $mock->expects($this->once())
->method('post') ->method('post')
->with($this->equalTo('zones'), ->with(
$this->equalTo('zones'),
$this->equalTo([]), $this->equalTo([]),
$this->equalTo(['name' => 'example.com', 'jumpstart' => true, 'organization' => $org]) $this->equalTo(['name' => 'example.com', 'jumpstart' => true, 'organization' => $org])
); );
@@ -101,21 +51,15 @@ class ZonesTest extends PHPUnit_Framework_TestCase
public function testActivationTest() public function testActivationTest()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/activationTest.json');
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "023e105f4ecef8ad9ca31a8372d0c353"
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('put')->willReturn($response); $mock->method('put')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('put') ->method('put')
->with($this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/activation_check'), ->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/activation_check'),
$this->equalTo([]), $this->equalTo([]),
$this->equalTo([]) $this->equalTo([])
); );
@@ -128,75 +72,15 @@ class ZonesTest extends PHPUnit_Framework_TestCase
public function testListZones() public function testListZones()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/listZones.json');
"success": true,
"errors": [],
"messages": [],
"result": [
{
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"name": "example.com",
"development_mode": 7200,
"original_name_servers": [
"ns1.originaldnshost.com",
"ns2.originaldnshost.com"
],
"original_registrar": "GoDaddy",
"original_dnshost": "NameCheap",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"name_servers": [
"tony.ns.cloudflare.com",
"woz.ns.cloudflare.com"
],
"owner": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"owner_type": "user"
},
"permissions": [
"#zone:read",
"#zone:edit"
],
"plan": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"plan_pending": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"status": "active",
"paused": false,
"type": "full"
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('zones'), ->with(
$this->equalTo('zones'),
$this->equalTo([ $this->equalTo([
'page' => 1, 'page' => 1,
'per_page' => 20, 'per_page' => 20,
@@ -221,75 +105,15 @@ class ZonesTest extends PHPUnit_Framework_TestCase
public function testGetZoneID() public function testGetZoneID()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/getZoneId.json');
"success": true,
"errors": [],
"messages": [],
"result": [
{
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"name": "example.com",
"development_mode": 7200,
"original_name_servers": [
"ns1.originaldnshost.com",
"ns2.originaldnshost.com"
],
"original_registrar": "GoDaddy",
"original_dnshost": "NameCheap",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"name_servers": [
"tony.ns.cloudflare.com",
"woz.ns.cloudflare.com"
],
"owner": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"owner_type": "user"
},
"permissions": [
"#zone:read",
"#zone:edit"
],
"plan": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"plan_pending": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"status": "active",
"paused": false,
"type": "full"
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('get')->willReturn($response); $mock->method('get')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('zones'), ->with(
$this->equalTo('zones'),
$this->equalTo([ $this->equalTo([
'page' => 1, 'page' => 1,
'per_page' => 20, 'per_page' => 20,
@@ -307,21 +131,15 @@ class ZonesTest extends PHPUnit_Framework_TestCase
public function testCachePurgeEverything() public function testCachePurgeEverything()
{ {
$stream = GuzzleHttp\Psr7\stream_for('{ $response = $this->getPsr7JsonResponseForFixture('Endpoints/cachePurgeEverything.json');
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "023e105f4ecef8ad9ca31a8372d0c353"
}
}');
$response = new GuzzleHttp\Psr7\Response(200, ['Content-Type' => 'application/json'], $stream);
$mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock(); $mock = $this->getMockBuilder(\Cloudflare\API\Adapter\Adapter::class)->getMock();
$mock->method('delete')->willReturn($response); $mock->method('delete')->willReturn($response);
$mock->expects($this->once()) $mock->expects($this->once())
->method('delete') ->method('delete')
->with($this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'), ->with(
$this->equalTo('zones/c2547eb745079dac9320b638f5e225cf483cc5cfdda41/purge_cache'),
$this->equalTo([]), $this->equalTo([]),
$this->equalTo(["purge_everything" => true]) $this->equalTo(["purge_everything" => true])
); );

View File

@@ -0,0 +1,8 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "023e105f4ecef8ad9ca31a8372d0c353"
}
}

View File

@@ -0,0 +1,18 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Restrict access to these endpoints to requests from a known IP address",
"urls": [
"api.mysite.com/some/endpoint*"
],
"configurations": [
{
"target": "ip",
"value": "1.2.3.4"
}
]
}
}

View File

@@ -0,0 +1,20 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"type": "A",
"name": "example.com",
"content": "1.2.3.4",
"proxiable": true,
"proxied": false,
"ttl": 120,
"locked": false,
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
"zone_name": "example.com",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"data": {}
}
}

View File

@@ -0,0 +1,54 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"name": "example.com",
"development_mode": 7200,
"original_name_servers": [
"ns1.originaldnshost.com",
"ns2.originaldnshost.com"
],
"original_registrar": "GoDaddy",
"original_dnshost": "NameCheap",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"name_servers": [
"tony.ns.cloudflare.com",
"woz.ns.cloudflare.com"
],
"owner": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"owner_type": "user"
},
"permissions": [
"#zone:read",
"#zone:edit"
],
"plan": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"plan_pending": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"status": "active",
"paused": false,
"type": "full"
}
}

View File

@@ -0,0 +1,8 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "023e105f4ecef8ad9ca31a8372d0c353"
}
}

View File

@@ -0,0 +1,31 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "9a7806061c88ada191ed06f989cc3dac",
"targets": [
{
"target": "url",
"constraint": {
"operator": "matches",
"value": "*example.com/images/*"
}
}
],
"actions": [
{
"id": "always_online",
"value": "on"
}
],
"priority": 1,
"status": "active",
"modified_on": "2014-01-01T05:20:00.12345Z",
"created_on": "2014-01-01T05:20:00.12345Z"
}
}

View File

@@ -0,0 +1,23 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "e928d310693a83094309acf9ead50448",
"name": "My Railgun",
"status": "active",
"enabled": true,
"zones_connected": 2,
"build": "b1234",
"version": "2.1",
"revision": "123",
"activation_key": "e4edc00281cb56ebac22c81be9bac8f3",
"activated_on": "2014-01-02T02:20:00Z",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z"
}
}

View File

@@ -0,0 +1,18 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack",
"mode": "js_challenge",
"configuration": {
"target": "ua",
"value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4"
}
}
}

View File

@@ -0,0 +1,12 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59"
}
}

View File

@@ -0,0 +1,12 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "9a7806061c88ada191ed06f989cc3dac"
}
}

View File

@@ -0,0 +1,12 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "e928d310693a83094309acf9ead50448"
}
}

View File

@@ -0,0 +1,12 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59"
}
}

View File

@@ -0,0 +1,20 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"type": "A",
"name": "example.com",
"content": "1.2.3.4",
"proxiable": true,
"proxied": false,
"ttl": 120,
"locked": false,
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
"zone_name": "example.com",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"data": {}
}
}

View File

@@ -0,0 +1,22 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "de677e5818985db1285d0e80225f06e5",
"name": "Project Honey Pot",
"description": "Group designed to protect against IP addresses that are a threat and typically used to launch DDoS attacks",
"rules_count": 10,
"modified_rules_count": 2,
"package_id": "a25a9a7e9c00afc1fb2e0245519d725b",
"mode": "on",
"allowed_modes": [
"on",
"off"
]
}
}

View File

@@ -0,0 +1,17 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "a25a9a7e9c00afc1fb2e0245519d725b",
"name": "WordPress rules",
"description": "Common WordPress exploit protections",
"detection_mode": "traditional",
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
"status": "active"
}
}

View File

@@ -0,0 +1,24 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "f939de3be84e66e757adcdcb87908023",
"description": "SQL injection prevention for SELECT statements",
"priority": 5,
"group": {
"id": "de677e5818985db1285d0e80225f06e5",
"name": "Project Honey Pot"
},
"package_id": "a25a9a7e9c00afc1fb2e0245519d725b",
"allowed_modes": [
"on",
"off"
],
"mode": "on"
}
}

View File

@@ -0,0 +1,31 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "9a7806061c88ada191ed06f989cc3dac",
"targets": [
{
"target": "url",
"constraint": {
"operator": "matches",
"value": "*example.com/images/*"
}
}
],
"actions": [
{
"id": "always_online",
"value": "on"
}
],
"priority": 1,
"status": "active",
"modified_on": "2014-01-01T05:20:00.12345Z",
"created_on": "2014-01-01T05:20:00.12345Z"
}
}

View File

@@ -0,0 +1,23 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "e928d310693a83094309acf9ead50448",
"name": "My Railgun",
"status": "active",
"enabled": true,
"zones_connected": 2,
"build": "b1234",
"version": "2.1",
"revision": "123",
"activation_key": "e4edc00281cb56ebac22c81be9bac8f3",
"activated_on": "2014-01-02T02:20:00Z",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z"
}
}

View File

@@ -0,0 +1,22 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Restrict access to these endpoints to requests from a known IP address",
"urls": [
"api.mysite.com/some/endpoint*"
],
"configurations": [
{
"target": "ip",
"value": "1.2.3.4"
}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack",
"mode": "js_challenge",
"configuration": {
"target": "ua",
"value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4"
}
}
}

View File

@@ -0,0 +1,18 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"first_name": "John",
"last_name": "Appleseed",
"username": "cfuser12345",
"telephone": "+1 123-123-1234",
"country": "US",
"zipcode": "12345",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z",
"two_factor_authentication_enabled": false
}
}

View File

@@ -0,0 +1,18 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"first_name": "John",
"last_name": "Appleseed",
"username": "cfuser12345",
"telephone": "+1 123-123-1234",
"country": "US",
"zipcode": "12345",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z",
"two_factor_authentication_enabled": false
}
}

View File

@@ -0,0 +1,18 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"first_name": "John",
"last_name": "Appleseed",
"username": "cfuser12345",
"telephone": "+1 123-123-1234",
"country": "US",
"zipcode": "12345",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z",
"two_factor_authentication_enabled": false
}
}

View File

@@ -0,0 +1,62 @@
{
"success": true,
"errors": [],
"messages": [],
"result": [
{
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"name": "example.com",
"development_mode": 7200,
"original_name_servers": [
"ns1.originaldnshost.com",
"ns2.originaldnshost.com"
],
"original_registrar": "GoDaddy",
"original_dnshost": "NameCheap",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"name_servers": [
"tony.ns.cloudflare.com",
"woz.ns.cloudflare.com"
],
"owner": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"owner_type": "user"
},
"permissions": [
"#zone:read",
"#zone:edit"
],
"plan": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"plan_pending": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"status": "active",
"paused": false,
"type": "full"
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}

View File

@@ -0,0 +1,13 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"ipv4_cidrs": [
"199.27.128.0/21"
],
"ipv6_cidrs": [
"2400:cb00::/32"
]
}
}

View File

@@ -0,0 +1,26 @@
{
"success": true,
"errors": [],
"messages": [],
"result": [
{
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Restrict access to these endpoints to requests from a known IP address",
"urls": [
"api.mysite.com/some/endpoint*"
],
"configurations": [
{
"target": "ip",
"value": "1.2.3.4"
}
]
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}

View File

@@ -0,0 +1,30 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": [
{
"id": "de677e5818985db1285d0e80225f06e5",
"name": "Project Honey Pot",
"description": "Group designed to protect against IP addresses that are a threat and typically used to launch DDoS attacks",
"rules_count": 10,
"modified_rules_count": 2,
"package_id": "a25a9a7e9c00afc1fb2e0245519d725b",
"mode": "on",
"allowed_modes": [
"on",
"off"
]
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}

View File

@@ -0,0 +1,38 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": [
{
"id": "92f17202ed8bd63d69a66b86a49a8f6b",
"notes": "This rule is on because of an event that occured on date X",
"allowed_modes": [
"whitelist",
"block",
"challenge"
],
"mode": "challenge",
"configuration": {
"target": "ip",
"value": "1.2.3.4"
},
"scope": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"type": "user"
},
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z"
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}

View File

@@ -0,0 +1,25 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": [
{
"id": "a25a9a7e9c00afc1fb2e0245519d725b",
"name": "WordPress rules",
"description": "Common WordPress exploit protections",
"detection_mode": "traditional",
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
"status": "active"
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}

View File

@@ -0,0 +1,39 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": [
{
"id": "9a7806061c88ada191ed06f989cc3dac",
"targets": [
{
"target": "url",
"constraint": {
"operator": "matches",
"value": "*example.com/images/*"
}
}
],
"actions": [
{
"id": "always_online",
"value": "on"
}
],
"priority": 1,
"status": "active",
"modified_on": "2014-01-01T05:20:00.12345Z",
"created_on": "2014-01-01T05:20:00.12345Z"
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}

View File

@@ -0,0 +1,30 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": [
{
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"name": "example.com",
"development_mode": 7200,
"original_name_servers": [
"ns1.originaldnshost.com",
"ns2.originaldnshost.com"
],
"original_registrar": "GoDaddy",
"original_dnshost": "NameCheap",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z"
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}

View File

@@ -0,0 +1,31 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": [
{
"id": "e928d310693a83094309acf9ead50448",
"name": "My Railgun",
"status": "active",
"enabled": true,
"zones_connected": 2,
"build": "b1234",
"version": "2.1",
"revision": "123",
"activation_key": "e4edc00281cb56ebac22c81be9bac8f3",
"activated_on": "2014-01-02T02:20:00Z",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z"
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}

View File

@@ -0,0 +1,28 @@
{
"success": true,
"errors": [],
"messages": [],
"result": [
{
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"type": "A",
"name": "example.com",
"content": "1.2.3.4",
"proxiable": true,
"proxied": false,
"ttl": 120,
"locked": false,
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
"zone_name": "example.com",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"data": {}
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}

View File

@@ -0,0 +1,26 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": [
{
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack",
"mode": "js_challenge",
"configuration": {
"target": "ua",
"value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4"
}
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}

View File

@@ -0,0 +1,62 @@
{
"success": true,
"errors": [],
"messages": [],
"result": [
{
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"name": "example.com",
"development_mode": 7200,
"original_name_servers": [
"ns1.originaldnshost.com",
"ns2.originaldnshost.com"
],
"original_registrar": "GoDaddy",
"original_dnshost": "NameCheap",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"name_servers": [
"tony.ns.cloudflare.com",
"woz.ns.cloudflare.com"
],
"owner": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"owner_type": "user"
},
"permissions": [
"#zone:read",
"#zone:edit"
],
"plan": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"plan_pending": {
"id": "e592fd9519420ba7405e1307bff33214",
"name": "Pro Plan",
"price": 20,
"currency": "USD",
"frequency": "monthly",
"legacy_id": "pro",
"is_subscribed": true,
"can_subscribe": true
},
"status": "active",
"paused": false,
"type": "full"
}
],
"result_info": {
"page": 1,
"per_page": 20,
"count": 1,
"total_count": 2000
}
}

View File

@@ -0,0 +1,24 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"type": "A",
"name": "example.com",
"content": "1.2.3.4",
"proxiable": true,
"proxied": false,
"ttl": 120,
"locked": false,
"zone_id": "023e105f4ecef8ad9ca31a8372d0c353",
"zone_name": "example.com",
"created_on": "2014-01-01T05:20:00.12345Z",
"modified_on": "2014-01-01T05:20:00.12345Z",
"data": {}
}
}

View File

@@ -0,0 +1,22 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Restrict access to these endpoints to requests from a known IP address",
"urls": [
"api.mysite.com/some/endpoint*"
],
"configurations": [
{
"target": "ip",
"value": "1.2.3.4"
}
]
}
}

View File

@@ -0,0 +1,22 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "de677e5818985db1285d0e80225f06e5",
"name": "Project Honey Pot",
"description": "Group designed to protect against IP addresses that are a threat and typically used to launch DDoS attacks",
"rules_count": 10,
"modified_rules_count": 2,
"package_id": "a25a9a7e9c00afc1fb2e0245519d725b",
"mode": "off",
"allowed_modes": [
"on",
"off"
]
}
}

View File

@@ -0,0 +1,24 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "f939de3be84e66e757adcdcb87908023",
"description": "SQL injection prevention for SELECT statements",
"priority": 5,
"group": {
"id": "de677e5818985db1285d0e80225f06e5",
"name": "Project Honey Pot"
},
"package_id": "a25a9a7e9c00afc1fb2e0245519d725b",
"allowed_modes": [
"on",
"off"
],
"mode": "on"
}
}

View File

@@ -0,0 +1,31 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "9a7806061c88ada191ed06f989cc3dac",
"targets": [
{
"target": "url",
"constraint": {
"operator": "matches",
"value": "*example.com/images/*"
}
}
],
"actions": [
{
"id": "always_online",
"value": "on"
}
],
"priority": 1,
"status": "active",
"modified_on": "2014-01-01T05:20:00.12345Z",
"created_on": "2014-01-01T05:20:00.12345Z"
}
}

View File

@@ -0,0 +1,23 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "e928d310693a83094309acf9ead50448",
"name": "My Railgun",
"status": "active",
"enabled": true,
"zones_connected": 2,
"build": "b1234",
"version": "2.1",
"revision": "123",
"activation_key": "e4edc00281cb56ebac22c81be9bac8f3",
"activated_on": "2014-01-02T02:20:00Z",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z"
}
}

View File

@@ -0,0 +1,18 @@
{
"success": true,
"errors": [
{}
],
"messages": [
{}
],
"result": {
"id": "372e67954025e0ba6aaa6d586b9e0b59",
"description": "Prevent access from abusive clients identified by this UserAgent to mitigate DDoS attack",
"mode": "js_challenge",
"configuration": {
"target": "ua",
"value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4"
}
}
}

View File

@@ -0,0 +1,18 @@
{
"success": true,
"errors": [],
"messages": [],
"result": {
"id": "7c5dae5552338874e5053f2534d2767a",
"email": "user@example.com",
"first_name": "John",
"last_name": "Appleseed",
"username": "cfuser12345",
"telephone": "+1 123-123-1234",
"country": "US",
"zipcode": "12345",
"created_on": "2014-01-01T05:20:00Z",
"modified_on": "2014-01-01T05:20:00Z",
"two_factor_authentication_enabled": false
}
}

45
tests/TestCase.php Normal file
View File

@@ -0,0 +1,45 @@
<?php
use GuzzleHttp\Psr7;
/**
* Class TestCase
* @SuppressWarnings(PHPMD.NumberOfChildren)
*/
abstract class TestCase extends PHPUnit_Framework_TestCase
{
/**
* Returns a PSR7 Stream for a given fixture.
*
* @param string $fixture The fixture to create the stream for.
* @return Psr7Stream
*/
protected function getPsr7StreamForFixture($fixture): Psr7\Stream
{
$path = sprintf('%s/Fixtures/%s', __DIR__, $fixture);
$this->assertFileExists($path);
$stream = Psr7\stream_for(file_get_contents($path));
$this->assertInstanceOf(Psr7\Stream::class, $stream);
return $stream;
}
/**
* Returns a PSR7 Response (JSON) for a given fixture.
*
* @param string $fixture The fixture to create the response for.
* @param integer $statusCode A HTTP Status Code for the response.
* @return Psr7Response
*/
protected function getPsr7JsonResponseForFixture($fixture, $statusCode = 200): Psr7\Response
{
$stream = $this->getPsr7StreamForFixture($fixture);
$this->assertNotNull(json_decode($stream));
$this->assertEquals(JSON_ERROR_NONE, json_last_error());
return new Psr7\Response($statusCode, ['Content-Type' => 'application/json'], $stream);
}
}