rosavox/lib/alveolata/accesscontrol/test.spec.php
2025-05-23 07:33:29 +00:00

52 lines
1.2 KiB
PHP

<?php
require_once(DIR_ALVEOLATA . '/accesscontrol/functions.php');
$data = \alveolata\test\get_data();
\alveolata\test\add(
[
'name' => 'alveolata',
'sections' => [
[
'name' => 'accesscontrol',
'sections' => [
[
'name' => 'check',
'setup' => function (&$environment) use ($data) {
$environment['subject'] = \alveolata\accesscontrol\make(
[
'password' => function ($parameters, $state) {
return ($state['password'] === $parameters['value']);
},
],
$data['check']['parameters']['acl']
);
},
'cases' => array_map(
function (array $case_raw) : array {
return [
'name' => $case_raw['name'],
'procedure' => function ($assert, &$environment) use ($case_raw) {
// execution
$resultActual = \alveolata\accesscontrol\check(
$environment['subject'],
$case_raw['input']['action'],
$case_raw['input']['state'],
);
// assertions
$resultExpected = $case_raw['output'];
$assert->equal($resultActual, $resultExpected);
},
];
},
$data['check']['cases']
),
],
]
]
]
]
);
?>