diff options
Diffstat (limited to 'platform/www/lib/plugins/bureaucracy/_test/field_user.test.php')
-rw-r--r-- | platform/www/lib/plugins/bureaucracy/_test/field_user.test.php | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/platform/www/lib/plugins/bureaucracy/_test/field_user.test.php b/platform/www/lib/plugins/bureaucracy/_test/field_user.test.php new file mode 100644 index 0000000..a7ade9b --- /dev/null +++ b/platform/www/lib/plugins/bureaucracy/_test/field_user.test.php @@ -0,0 +1,209 @@ +<?php + +namespace dokuwiki\plugin\bureaucracy\test; + +/** + * @group plugin_bureaucracy + * @group plugins + */ +class syntax_plugin_bureaucracy_fielduser_test extends BureaucracyTest +{ + + /** + * Create some users + */ + public function setUp(): void + { + parent::setUp(); + + /** @var \DokuWiki_Auth_Plugin $auth */ + global $auth; + + $auth->createUser("user1", "54321", "user1Name", "user1@example.com"); + $auth->createUser("user2", "543210", "user2Name", "user2@example.com"); + $auth->createUser("mwuser", "12345", "Wiki User", "wikiuser@example.com", ['group1', 'group2']); + } + + public function dataProvider() + { + return [ + [ + 'user:@@user@@', + 'user user', + 'mwuser', + 'user:mwuser', + [], + 'default substitution', + ], + [ + 'user:@@user@@', + 'user user', + '', + 'user:', + ['user'], + 'error for empty substitution', + ], + [ + 'user:@@user@@', + 'user user !', + '', + 'user:', + [], + 'ok for empty substitution in optional field', + ], + [ + 'user:@@user.name@@', + 'user user', + 'mwuser', + 'user:Wiki User', + [], + 'name substitution', + ], + [ + 'user:@@user.mail@@', + 'user user', + 'mwuser', + 'user:wikiuser@example.com', + [], + 'mail substitution', + ], + [ + 'user:@@user.grps@@', + 'user user', + 'mwuser', + 'user:group1, group2', + [], + 'groups substitution', + ], + [ + 'user:@@user.grps(;)@@', + 'user user', + 'mwuser', + 'user:group1;group2', + [], + 'groups substitution custom delimiter', + ], + [ + 'user:@@user.grps())@@', + 'user user', + 'mwuser', + 'user:group1)group2', + [], + 'groups substitution custom delimiter with brackets', + ], + [ + 'user:@@user.no_sutch_attribute@@', + 'user user', + 'mwuser', + 'user:@@user.no_sutch_attribute@@', + [], + 'template unknown attribute substitution', + ], + [ + 'user:##user##', + 'user user', + 'mwuser', + 'user:mwuser', + [], + 'hash substitution', + ], + [ + 'user:##user.mail##', + 'user user', + 'mwuser', + 'user:wikiuser@example.com', + [], + 'hash substitution with attribute', + ], + [ + 'user:##user@@', + 'user user', + 'mwuser', + 'user:##user@@', + [], + 'hash substitution sign mismatch', + ], + [ + "user:@@user@@\n\nmail:@@user.mail@@\n\ngrps:@@user.grps(\n)@@", + 'user user', + 'mwuser', + "user:mwuser\n\nmail:wikiuser@example.com\n\ngrps:group1\ngroup2", + [], + 'multiple replacements', + ], + [ + "grps1:@@user.grps(\n)@@\n\ngrps2:@@user.grps(())@@", + 'user user', + 'mwuser', + "grps1:group1\ngroup2\n\ngrps2:group1()group2", + [], + 'groups twice', + ], + [ + 'grps:@@user.grps(end))@@', + 'user user', + 'mwuser', + 'grps:group1end)group2', + [], + 'groups special glue', + ], + [ + 'grps:@@user.grps()@@', + 'user user', + 'mwuser', + 'grps:group1group2', + [], + 'groups with empty delimiter', + ], + [ + 'user:@@user@@', + 'user user', + 'non_existant_user', + 'user:non_existant_user', + ['user'], + 'error for non existant user', + ], + [ + 'user:@@user.name@@', + 'user user', + 'non_existant_user', + 'user:@@user.name@@', + ['user'], + 'error for non existant user with attribute', + ], + ]; + } + + + /** + * @dataProvider dataProvider + * + * @param string $templateSyntax + * @param string $formSyntax + * @param string $postedValue value of 'user' field + * @param string $expectedWikiText + * @param string $expectedValidationErrors + * @param string $msg + * + */ + public function test_field_user( + $templateSyntax, + $formSyntax, + $postedValue, + $expectedWikiText, + $expectedValidationErrors, + $msg + ) { + $actualValidationErrors = []; + + $actualWikiText = parent::send_form_action_template( + $formSyntax, + $templateSyntax, + $actualValidationErrors, + $postedValue + ); + + $this->assertEquals($expectedValidationErrors, $actualValidationErrors, $msg); + $this->assertEquals($expectedWikiText, $actualWikiText, $msg); + } +} |