Skip to content

Custom VPP apps: Integration Testing and Documentation #37263

@cdcme

Description

@cdcme

Related user story

Parent: #32461
Research: #32713

Add comprehensive integration tests for custom VPP apps and update documentation to include instructions for custom app deployment.

Task

Current State:

  • Integration tests mock iTunes API via appleITunesSrv httptest server
  • No mock for VPP metadata proxy
  • Feature guide covers public VPP apps only

Desired State:

  • Integration tests mock VPP metadata proxy
  • Tests verify custom apps work end-to-end
  • Feature guide includes custom app instructions
  • API documentation updated if needed

Conditions of satisfaction / implementation notes

Integration Test Infrastructure

  • Mock VPP proxy server created (httptest.Server)
  • Mock implements /register and /metadata endpoints
  • FLEET_DEV_STOKEN_AUTHENTICATED_APPS_URL env var set in tests
  • Mock can simulate custom apps (apps not in iTunes)
  • Mock can simulate error scenarios (401, 429, 500)

Test Scenarios

  • Custom app appears in GetAppStoreApps response
  • Custom app can be added via API (AddAppStoreApp)
  • Custom app can be added via GitOps (BatchAssociateVPPApps)
  • Custom app can be installed on macOS host
  • Custom app can be installed on iOS host
  • Custom app can be installed on iPadOS host
  • Custom app can be edited (self-service toggle)
  • Custom app can be deleted
  • Activity feed shows correct activities for custom apps
  • Public apps still work (regression test)

Error Handling Tests

  • Proxy unavailable - graceful error message
  • Invalid license - clear error message
  • Rate limited - retry behavior
  • Custom app not in VPP account (when attempting to add by ID) - appropriate error

Documentation

  • Feature guide updated: install-app-store-apps.md
  • Add section on custom apps from Apple Business Manager
  • Include prerequisites (app must be added to ABM first)
  • Include troubleshooting tips for common issues
  • API documentation unchanged (same endpoints work)

Metadata

Metadata

Assignees

Labels

#g-softwareSoftware product group:releaseReady to write code. Scheduled in a release. See "Making changes" in handbook.~backendBackend-related issue.~sub-taskA technical sub-task that is part of a story. (Not QA'd. Not estimated.)

Type

Projects

Status

✅ Ready for release

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions