'local-tenant', 'name' => 'Tenant One', 'metadata' => [], 'is_current' => true, ]); $tenant->makeCurrent(); $this->tenant = $tenant; $this->user = User::factory()->create(); }); test('policy detail renders normalized settings for Autopilot profiles', function () { $policy = Policy::create([ 'tenant_id' => $this->tenant->id, 'external_id' => 'autopilot-1', 'policy_type' => 'windowsAutopilotDeploymentProfile', 'display_name' => 'Autopilot Profile A', 'platform' => 'windows', ]); PolicyVersion::create([ 'tenant_id' => $this->tenant->id, 'policy_id' => $policy->id, 'version_number' => 1, 'policy_type' => $policy->policy_type, 'platform' => $policy->platform, 'created_by' => 'tester@example.com', 'captured_at' => CarbonImmutable::now(), 'snapshot' => [ '@odata.type' => '#microsoft.graph.azureADWindowsAutopilotDeploymentProfile', 'displayName' => 'Autopilot Profile A', 'deviceNameTemplate' => 'DEV-%SERIAL%', 'enableWhiteGlove' => true, 'outOfBoxExperienceSettings' => [ 'hideEULA' => true, 'userType' => 'standard', ], ], ]); $response = $this->actingAs($this->user) ->get(PolicyResource::getUrl('view', ['record' => $policy])); $response->assertOk(); $response->assertSee('Settings'); $response->assertSee('Autopilot profile'); $response->assertSee('Device name template'); $response->assertSee('DEV-%SERIAL%'); $response->assertSee('Pre-provisioning (White Glove)'); $response->assertSee('Enabled'); $response->assertSee('OOBE: Hide EULA'); $response->assertSee('OOBE: User type'); }); test('policy detail renders normalized settings for Enrollment Status Page (ESP)', function () { $policy = Policy::create([ 'tenant_id' => $this->tenant->id, 'external_id' => 'esp-1', 'policy_type' => 'windowsEnrollmentStatusPage', 'display_name' => 'ESP A', 'platform' => 'windows', ]); PolicyVersion::create([ 'tenant_id' => $this->tenant->id, 'policy_id' => $policy->id, 'version_number' => 1, 'policy_type' => $policy->policy_type, 'platform' => $policy->platform, 'created_by' => 'tester@example.com', 'captured_at' => CarbonImmutable::now(), 'snapshot' => [ '@odata.type' => '#microsoft.graph.windowsEnrollmentStatusPageConfiguration', 'displayName' => 'ESP A', 'priority' => 1, 'showInstallationProgress' => true, 'installProgressTimeoutInMinutes' => 60, 'selectedMobileAppIds' => ['app-1', 'app-2'], ], ]); $response = $this->actingAs($this->user) ->get(PolicyResource::getUrl('view', ['record' => $policy])); $response->assertOk(); $response->assertSee('Settings'); $response->assertSee('Enrollment Status Page (ESP)'); $response->assertSee('Priority'); $response->assertSee('1'); $response->assertSee('Show installation progress'); $response->assertSee('Enabled'); $response->assertSee('Selected mobile app IDs'); $response->assertSee('app-1'); $response->assertSee('app-2'); }); test('policy detail renders normalized settings for enrollment restrictions', function () { $policy = Policy::create([ 'tenant_id' => $this->tenant->id, 'external_id' => 'enroll-restrict-1', 'policy_type' => 'enrollmentRestriction', 'display_name' => 'Restriction A', 'platform' => 'all', ]); PolicyVersion::create([ 'tenant_id' => $this->tenant->id, 'policy_id' => $policy->id, 'version_number' => 1, 'policy_type' => $policy->policy_type, 'platform' => $policy->platform, 'created_by' => 'tester@example.com', 'captured_at' => CarbonImmutable::now(), 'snapshot' => [ '@odata.type' => '#microsoft.graph.deviceEnrollmentPlatformRestrictionConfiguration', 'displayName' => 'Restriction A', 'deviceEnrollmentConfigurationType' => 'deviceEnrollmentPlatformRestrictionConfiguration', 'platformRestriction' => [ 'platformBlocked' => false, 'personalDeviceEnrollmentBlocked' => true, 'blockedSkus' => ['sku-1'], ], ], ]); $response = $this->actingAs($this->user) ->get(PolicyResource::getUrl('view', ['record' => $policy])); $response->assertOk(); $response->assertSee('Settings'); $response->assertSee('Enrollment restrictions'); $response->assertSee('Personal device enrollment blocked'); $response->assertSee('Enabled'); $response->assertSee('Blocked SKUs'); $response->assertSee('sku-1'); });