diff --git a/.php_cs b/.php_cs
index ff96ac7..3518e7e 100644
--- a/.php_cs
+++ b/.php_cs
@@ -1,38 +1,132 @@
in(__DIR__);
-$config = Symfony\CS\Config\Config::create()
-->level(Symfony\CS\FixerInterface::PSR2_LEVEL)
-->finder($finder)
-->fixers(
- [
- 'extra_empty_lines',
- 'no_blank_lines_after_class_opening',
- 'no_empty_lines_after_phpdocs',
- 'operators_spaces',
- 'duplicate_semicolon',
- 'namespace_no_leading_whitespace',
- 'phpdoc_indent',
- 'phpdoc_no_empty_return',
- 'phpdoc_no_package',
- 'phpdoc_params',
- 'phpdoc_separation',
- 'phpdoc_to_comment',
- 'phpdoc_trim',
- 'phpdoc_var_without_name',
- 'remove_leading_slash_use',
- 'remove_lines_between_uses',
- 'return',
- 'single_array_no_trailing_comma',
- 'single_quote',
- 'spaces_before_semicolon',
- 'spaces_cast',
- 'standardize_not_equal',
- 'ternary_spaces',
- 'whitespacy_lines',
- 'ordered_use',
- 'short_array_syntax'
- ]
-);
-return $config;
+$header = <<<'EOF'
+This file is part of the Ray.WebFormModule package.
+
+@license http://opensource.org/licenses/MIT MIT
+EOF;
+
+return \PhpCsFixer\Config::create()
+ ->setRiskyAllowed(true)
+ ->setRules(array(
+ '@PSR2' => true,
+ 'header_comment' => ['header' => $header, 'commentType' => 'PHPDoc', 'separate' => 'none'],
+ 'array_syntax' => ['syntax' => 'short'],
+ 'binary_operator_spaces' => ['align_equals' => false, 'align_double_arrow' => false],
+ 'blank_line_after_opening_tag' => true,
+ 'blank_line_after_namespace' => false,
+ 'blank_line_before_return' => true,
+ 'cast_spaces' => true,
+// 'class_keyword_remove' => true,
+ 'combine_consecutive_unsets' => true,
+ 'concat_space' => ['spacing' => 'one'],
+ 'declare_equal_normalize' => true,
+ 'declare_strict_types' => false,
+ 'dir_constant' => true,
+ 'ereg_to_preg' => true,
+ 'function_typehint_space' => true,
+ 'general_phpdoc_annotation_remove' => true,
+ 'hash_to_slash_comment' => true,
+ 'heredoc_to_nowdoc' => true,
+ 'include' => true,
+ 'indentation_type' => true,
+ 'is_null' => ['use_yoda_style' => false],
+ 'linebreak_after_opening_tag' => true,
+ 'lowercase_cast' => true,
+// 'mb_str_functions' => true,
+ 'method_separation' => true,
+ 'modernize_types_casting' => true,
+ 'native_function_casing' => true,
+// 'native_function_invocation' => true,
+ 'new_with_braces' => false, //
+ 'no_alias_functions' => true,
+ 'no_blank_lines_after_class_opening' => true,
+ 'no_blank_lines_after_phpdoc' => true,
+ 'no_blank_lines_before_namespace' => true,
+ 'no_empty_comment' => true,
+ 'no_empty_phpdoc' => true,
+ 'no_empty_statement' => true,
+ 'no_extra_consecutive_blank_lines' => ['break', 'continue', 'curly_brace_block', 'extra', 'parenthesis_brace_block', 'return', 'square_brace_block', 'throw', 'use', 'useTrait'],
+ 'no_leading_import_slash' => true,
+ 'no_leading_namespace_whitespace' => true,
+ 'no_mixed_echo_print' => ['use' => 'echo'],
+ 'no_multiline_whitespace_around_double_arrow' => true,
+ 'no_multiline_whitespace_before_semicolons' => true,
+ 'no_php4_constructor' => false,
+ 'no_short_bool_cast' => true,
+ 'no_short_echo_tag' => false,
+ 'no_singleline_whitespace_before_semicolons' => true,
+ 'no_spaces_around_offset' => true,
+ 'no_trailing_comma_in_list_call' => true,
+ 'no_trailing_comma_in_singleline_array' => true,
+ 'no_trailing_whitespace' => true,
+ 'no_trailing_whitespace_in_comment' => true,
+ 'no_unneeded_control_parentheses' => true,
+ 'no_unreachable_default_argument_value' => true,
+ 'no_unused_imports' => true,
+ 'no_useless_else' => true,
+ 'no_useless_return' => true,
+ 'no_whitespace_before_comma_in_array' => true,
+ 'no_whitespace_in_blank_line' => true,
+ 'normalize_index_brace' => true,
+ 'not_operator_with_space' => false,
+ 'not_operator_with_successor_space' => true,
+ 'object_operator_without_whitespace' => true,
+ 'ordered_class_elements' => true,
+ 'ordered_imports' => true,
+ 'php_unit_construct' => true,
+ 'php_unit_dedicate_assert' => true,
+ 'php_unit_fqcn_annotation' => true,
+ 'php_unit_strict' => true,
+// 'phpdoc_add_missing_param_annotation' => true,
+ 'phpdoc_align' => true,
+ 'phpdoc_annotation_without_dot' => true,
+ 'phpdoc_indent' => true,
+ 'phpdoc_inline_tag' => true,
+ 'phpdoc_no_access' => true,
+ 'phpdoc_no_alias_tag' => ['property-read' => 'property', 'property-write' => 'property', 'type' => 'var'],
+ 'phpdoc_no_empty_return' => true,
+ 'phpdoc_no_package' => true,
+// 'phpdoc_no_useless_inheritdoc' => true,
+ 'phpdoc_order' => true,
+ 'phpdoc_return_self_reference' => true,
+ 'phpdoc_scalar' => true,
+ 'phpdoc_separation' => true,
+ 'phpdoc_single_line_var_spacing' => true,
+// 'phpdoc_summary' => true,
+ 'phpdoc_to_comment' => true,
+ 'phpdoc_trim' => true,
+ 'phpdoc_types' => true,
+ 'phpdoc_var_without_name' => true,
+ 'pow_to_exponentiation' => true,
+// 'pre_increment' => true,
+ 'protected_to_private' => true,
+ 'psr0' => true,
+ 'psr4' => true,
+ 'random_api_migration' => true,
+ 'return_type_declaration' => ['space_before' => 'one'],
+ 'self_accessor' => true,
+ 'short_scalar_cast' => true,
+// 'silenced_deprecation_error' => true,
+// 'simplified_null_return' => true,
+// 'single_blank_line_before_namespace' => true,
+ 'single_quote' => true,
+ 'space_after_semicolon' => true,
+ 'standardize_not_equals' => true,
+// 'strict_comparison' => true,
+ 'ternary_operator_spaces' => true,
+ 'strict_param' => true,
+// 'ternary_to_null_coalescing' => true,
+// 'trailing_comma_in_multiline_array' => true,
+ 'trim_array_spaces' => true,
+ 'unary_operator_spaces' => true,
+ 'whitespace_after_comma_in_array' => true
+ ))
+ ->setFinder(
+ PhpCsFixer\Finder::create()
+ ->exclude('tests/Fake')
+ ->exclude('src-data')
+ ->exclude('src-deprecated')
+ ->in(__DIR__)
+ )->setLineEnding("\n")
+ ->setUsingCache(false);
diff --git a/.travis.yml b/.travis.yml
index 23cf9fe..9c343aa 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,17 +1,24 @@
language: php
-
+sudo: false
php:
- - 5.5
- 5.6
- - hhvm
- 7
-
-install: travis_retry composer install --no-interaction --prefer-source
-
+ - 7.1
+ - hhvm
+cache:
+ directories:
+ - vendor
+ - $HOME/.composer/cache
+env:
+ matrix:
+ - DEPENDENCIES=""
+ - DEPENDENCIES="--prefer-lowest --prefer-stable"
+before_script:
+ - composer self-update
+ - composer update $DEPENDENCIES
script:
- - if [ "$TRAVIS_PHP_VERSION" == "hhvm" ]; then phpunit; fi
- - if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then phpunit --coverage-text --coverage-clover=coverage.clover; fi
+ - ./vendor/bin/phpunit --coverage-clover=coverage.clover;
+ - if [ "$TRAVIS_PHP_VERSION" = "7.1" ]; then wget http://cs.sensiolabs.org/download/php-cs-fixer-v2.phar && php php-cs-fixer-v2.phar fix --config=.php_cs -v --dry-run --using-cache=no --path-mode=intersection `git diff --name-only --diff-filter=ACMRTUXB $TRAVIS_COMMIT_RANGE`; fi
after_script:
- - wget https://scrutinizer-ci.com/ocular.phar
- - if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi
+ - if [ "$TRAVIS_PHP_VERSION" = "7.1" ]; then wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi
diff --git a/composer.json b/composer.json
index b4f65fe..402e186 100644
--- a/composer.json
+++ b/composer.json
@@ -6,11 +6,14 @@
"Ray.Di module"
],
"require": {
- "ray/di": "^2.0",
- "foa/filter-input-bundle": "^1.1@dev",
- "aura/filter": "^2.0@dev",
+ "ray/di": "^2.5",
+ "aura/input": "^1.2",
+ "aura/filter": "^2.3",
"aura/html": "^2.4",
- "ray/aura-session-module": "~1.0"
+ "ray/aura-session-module": "^1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7.13"
},
"license": "MIT",
"autoload":{
@@ -20,8 +23,13 @@
},
"autoload-dev":{
"psr-4":{
- "Ray\\WebFormModule\\": "tests/",
- "Ray\\WebFormModule\\": "tests/Fake"
+ "Ray\\WebFormModule\\": ["tests/", "tests/Fake"]
}
+ },
+ "scripts" :{
+ "test": ["@cs", "phpunit"],
+ "coverage": ["php -dzend_extension=xdebug.so ./vendor/bin/phpunit --coverage-text --coverage-html=build/coverage"],
+ "cs": ["php-cs-fixer fix -v --dry-run", "phpcs --standard=./phpcs.xml src"],
+ "cs-fix": ["php-cs-fixer fix -v", "phpcbf src"]
}
}
diff --git a/docs/demo/1.csrf/ContactForm.php b/docs/demo/1.csrf/ContactForm.php
index f3fe1af..ce91165 100644
--- a/docs/demo/1.csrf/ContactForm.php
+++ b/docs/demo/1.csrf/ContactForm.php
@@ -1,5 +1,9 @@
form();
+ // name
+ $form .= $this->helper->tag('div', ['class' => 'form-group']);
+ $form .= $this->helper->tag('label', ['for' => 'name']);
+ $form .= 'Name:';
+ $form .= $this->helper->tag('/label') . PHP_EOL;
+ $form .= $this->input('name');
+ $form .= $this->error('name');
+ $form .= $this->helper->tag('/div') . PHP_EOL;
+ // message
+ $form .= $this->helper->tag('div', ['class' => 'form-group']);
+ $form .= $this->helper->tag('label', ['for' => 'message']);
+ $form .= 'Message:';
+ $form .= $this->helper->tag('/label') . PHP_EOL;
+ $form .= $this->input('message');
+ $form .= $this->error('message');
+ $form .= $this->helper->tag('/div') . PHP_EOL;
+ // submit
+ $form .= $this->input('submit');
+ $form .= $this->helper->tag('/form');
+
+ return $form;
+ }
+
/**
* {@inheritdoc}
*/
@@ -60,33 +93,4 @@ public function submit()
{
return $_POST;
}
-
- /**
- * {@inheritdoc}
- */
- public function __toString()
- {
- $form = $this->form();
- // name
- $form .= $this->helper->tag('div', ['class' => 'form-group']);
- $form .= $this->helper->tag('label', ['for' => 'name']);
- $form .= 'Name:';
- $form .= $this->helper->tag('/label') . PHP_EOL;
- $form .= $this->input('name');
- $form .= $this->error('name');
- $form .= $this->helper->tag('/div') . PHP_EOL;
- // message
- $form .= $this->helper->tag('div', ['class' => 'form-group']);
- $form .= $this->helper->tag('label', ['for' => 'message']);
- $form .= 'Message:';
- $form .= $this->helper->tag('/label') . PHP_EOL;
- $form .= $this->input('message');
- $form .= $this->error('message');
- $form .= $this->helper->tag('/div') . PHP_EOL;
- // submit
- $form .= $this->input('submit');
- $form .= $this->helper->tag('/form');
-
- return $form;
- }
}
diff --git a/docs/demo/1.csrf/Controller.php b/docs/demo/1.csrf/Controller.php
index f0ee5eb..f17209a 100644
--- a/docs/demo/1.csrf/Controller.php
+++ b/docs/demo/1.csrf/Controller.php
@@ -1,5 +1,9 @@
addPsr4('Ray\WebFormModule\\', __DIR__);
use Aura\Input\Exception\CsrfViolation;
@@ -14,7 +17,7 @@
try {
$controller->createUser(['name' => 'bear', 'message' => 'hello']);
} catch (CsrfViolation $e) {
- echo 'Anti CSRF works !'. PHP_EOL;
+ echo 'Anti CSRF works !' . PHP_EOL;
exit;
}
echo 'Anti CSRF DOES NOT works !' . PHP_EOL;
diff --git a/docs/demo/1.csrf/web.php b/docs/demo/1.csrf/web.php
index ef72c18..5bf307b 100644
--- a/docs/demo/1.csrf/web.php
+++ b/docs/demo/1.csrf/web.php
@@ -1,5 +1,9 @@
+
diff --git a/phpmd.xml b/phpmd.xml
index bd342f1..0412e29 100644
--- a/phpmd.xml
+++ b/phpmd.xml
@@ -1,9 +1,7 @@
-
- PHP.Skeleton rule set
diff --git a/src/AbstractForm.php b/src/AbstractForm.php
index d3ddc98..3ab127e 100644
--- a/src/AbstractForm.php
+++ b/src/AbstractForm.php
@@ -1,6 +1,6 @@
filter = clone $this->filter;
+ $this->init();
+ }
+
/**
* @param BuilderInterface $builder
* @param FilterFactory $filterFactory
@@ -49,15 +59,11 @@ public function setBaseDependencies(
FilterFactory $filterFactory,
HelperLocatorFactory $helperFactory
) {
- $this->builder = $builder;
+ $this->builder = $builder;
$this->filter = $filterFactory->newSubjectFilter();
$this->helper = $helperFactory->newInstance();
}
- public function __construct()
- {
- }
-
public function setAntiCsrf(AntiCsrfInterface $antiCsrf)
{
$this->antiCsrf = $antiCsrf;
@@ -75,7 +81,7 @@ public function postConstruct()
}
/**
- * @inheritdoc
+ * {@inheritdoc}
*/
public function input($input)
{
@@ -83,7 +89,7 @@ public function input($input)
}
/**
- * @inheritdoc
+ * {@inheritdoc}
*/
public function error($input)
{
@@ -102,12 +108,12 @@ public function error($input)
}
/**
- * @param array $attr Attributes for the form tag.
- *
- * @return string
+ * @param array $attr attributes for the form tag
*
* @throws \Aura\Html\Exception\HelperNotFound
* @throws \Aura\Input\Exception\NoSuchInput
+ *
+ * @return string
*/
public function form($attr = [])
{
@@ -124,8 +130,9 @@ public function form($attr = [])
*
* @param array $data
*
- * @return bool
* @throws CsrfViolationException
+ *
+ * @return bool
*/
public function apply(array $data)
{
@@ -159,10 +166,4 @@ public function getIterator()
{
return new \ArrayIterator($this->inputs);
}
-
- public function __clone()
- {
- $this->filter = clone $this->filter;
- $this->init();
- }
}
diff --git a/src/Annotation/AbstractValidation.php b/src/Annotation/AbstractValidation.php
index b9daa11..3cf5e2f 100644
--- a/src/Annotation/AbstractValidation.php
+++ b/src/Annotation/AbstractValidation.php
@@ -1,6 +1,6 @@
failureHandler->handle($formValidation, $invocation, $form);
}
+ /**
+ * @param array $submit
+ * @param AbstractForm $form
+ *
+ * @throws Exception\CsrfViolationException
+ *
+ * @return bool
+ */
+ public function isValid(array $submit, AbstractForm $form)
+ {
+ $isValid = $form->apply($submit);
+
+ return $isValid;
+ }
+
/**
* Return arguments as named arguments.
*
@@ -81,20 +96,6 @@ private function getNamedArguments(MethodInvocation $invocation)
return $submit;
}
- /**
- * @param array $submit
- * @param AbstractForm $form
- *
- * @return bool
- * @throws Exception\CsrfViolationException
- */
- public function isValid(array $submit, AbstractForm $form)
- {
- $isValid = $form->apply($submit);
-
- return $isValid;
- }
-
/**
* Return form property
*
diff --git a/src/AuraInputModule.php b/src/AuraInputModule.php
index 3d9819a..738c346 100644
--- a/src/AuraInputModule.php
+++ b/src/AuraInputModule.php
@@ -1,6 +1,6 @@
reader->getMethodAnnotation($invocation->getMethod(), VndError::class);
- $error = new FormValidationError($this->makeVndError($form, $vndError));
+ $error = new FormValidationError($this->makeVndError($form, $vndError));
$e = new ValidationException('Validation failed.', 400, null, $error);
throw $e;
diff --git a/tests/AbstractAuraFormTest.php b/tests/AbstractAuraFormTest.php
index 33ae3be..ecc9068 100644
--- a/tests/AbstractAuraFormTest.php
+++ b/tests/AbstractAuraFormTest.php
@@ -1,5 +1,9 @@
antiCsrf = new AntiCsrf($this->newSession([]), false, [AntiCsrf::TOKEN_KEY => AntiCsrf::TEST_TOKEN]);
}
- protected function newSession(array $cookies = [])
- {
- return new Session(
- new SegmentFactory,
- new CsrfTokenFactory(new Randval(new Phpfunc())),
- $this->phpfunc,
- $cookies
- );
- }
-
public function testNew()
{
$this->assertInstanceOf(AntiCsrf::class, $this->antiCsrf);
@@ -58,4 +52,14 @@ public function testIsValid()
$data = [AntiCsrf::TOKEN_KEY => $this->session->getCsrfToken()->getValue()];
$this->assertTrue($this->antiCsrf->isValid($data));
}
+
+ protected function newSession(array $cookies = [])
+ {
+ return new Session(
+ new SegmentFactory,
+ new CsrfTokenFactory(new Randval(new Phpfunc())),
+ $this->phpfunc,
+ $cookies
+ );
+ }
}
diff --git a/tests/AuraInputInterceptorTest.php b/tests/AuraInputInterceptorTest.php
index a046464..400bb63 100644
--- a/tests/AuraInputInterceptorTest.php
+++ b/tests/AuraInputInterceptorTest.php
@@ -1,5 +1,9 @@