What Changed Removed per-file uses(TestCase::class ...) bindings in Unit tests to avoid Pest v4 “folder already uses the test case” discovery failure (kept RefreshDatabase where needed). Updated the backup scheduling job test to pass the newly required BulkOperationService when manually calling RunBackupScheduleJob::handle(). Where Unit (bulk cleanup across 56 files) RunBackupScheduleJobTest.php Verification ./vendor/bin/sail test → 443 passed, 5 skipped Co-authored-by: Ahmed Darrazi <ahmeddarrazi@adsmac.local> Reviewed-on: #45
88 lines
3.5 KiB
PHP
88 lines
3.5 KiB
PHP
<?php
|
|
|
|
use App\Services\Intune\CompliancePolicyNormalizer;
|
|
|
|
it('groups compliance policy fields into structured blocks', function () {
|
|
$normalizer = app(CompliancePolicyNormalizer::class);
|
|
|
|
$snapshot = [
|
|
'@odata.type' => '#microsoft.graph.windows10CompliancePolicy',
|
|
'passwordRequired' => true,
|
|
'passwordMinimumLength' => 8,
|
|
'defenderEnabled' => true,
|
|
'bitLockerEnabled' => false,
|
|
'osMinimumVersion' => '10.0.19045',
|
|
'activeFirewallRequired' => true,
|
|
'scheduledActionsForRule' => [
|
|
[
|
|
'ruleName' => 'Default rule',
|
|
'scheduledActionConfigurations' => [
|
|
['actionType' => 'notification'],
|
|
],
|
|
],
|
|
],
|
|
'scheduledActionsForRule@odata.context' => 'https://graph.microsoft.com/beta/$metadata#deviceManagement/deviceCompliancePolicies',
|
|
'customSetting' => 'Custom value',
|
|
];
|
|
|
|
$normalized = $normalizer->normalize($snapshot, 'deviceCompliancePolicy', 'windows');
|
|
|
|
$settings = collect($normalized['settings']);
|
|
|
|
$passwordBlock = $settings->firstWhere('title', 'Password & Access');
|
|
expect($passwordBlock)->not->toBeNull();
|
|
expect(collect($passwordBlock['rows'])->pluck('label')->all())
|
|
->toContain('Password required', 'Password minimum length');
|
|
|
|
$additionalBlock = $settings->firstWhere('title', 'Additional Settings');
|
|
expect($additionalBlock)->not->toBeNull();
|
|
expect(collect($additionalBlock['rows'])->pluck('label')->all())
|
|
->toContain('Custom Setting');
|
|
expect(collect($additionalBlock['rows'])->pluck('label')->all())
|
|
->not->toContain('Scheduled Actions For Rule');
|
|
expect(collect($additionalBlock['rows'])->pluck('label')->all())
|
|
->not->toContain('Scheduled Actions For Rule@Odata.context');
|
|
|
|
expect($settings->pluck('title')->all())->not->toContain('General');
|
|
});
|
|
|
|
it('flattens compliance notifications into a compact diff key', function () {
|
|
$normalizer = app(CompliancePolicyNormalizer::class);
|
|
|
|
$snapshot = [
|
|
'@odata.type' => '#microsoft.graph.windows10CompliancePolicy',
|
|
'passwordRequired' => true,
|
|
'scheduledActionsForRule' => [
|
|
[
|
|
'ruleName' => null,
|
|
'scheduledActionConfigurations' => [
|
|
[
|
|
'actionType' => 'notification',
|
|
'notificationTemplateId' => 'template-123',
|
|
],
|
|
[
|
|
'actionType' => 'notification',
|
|
'notificationTemplateId' => '00000000-0000-0000-0000-000000000000',
|
|
],
|
|
[
|
|
'actionType' => 'block',
|
|
'notificationTemplateId' => 'template-ignored',
|
|
],
|
|
],
|
|
],
|
|
],
|
|
'scheduledActionsForRule@odata.context' => 'https://graph.microsoft.com/beta/$metadata#deviceManagement/deviceCompliancePolicies',
|
|
];
|
|
|
|
$flat = $normalizer->flattenForDiff($snapshot, 'deviceCompliancePolicy', 'windows');
|
|
|
|
expect($flat)->toHaveKey('Password & Access > Password required');
|
|
expect($flat['Password & Access > Password required'])->toBeTrue();
|
|
|
|
expect($flat)->toHaveKey('Compliance notifications > Template IDs');
|
|
expect($flat['Compliance notifications > Template IDs'])->toBe(['template-123']);
|
|
|
|
expect(array_keys($flat))->not->toContain('scheduledActionsForRule');
|
|
expect(array_keys($flat))->not->toContain('scheduledActionsForRule@odata.context');
|
|
});
|