From ba186644460ad4c141027a602578a9eebeeeeabc Mon Sep 17 00:00:00 2001 From: Konstantin Sykulev Date: Thu, 31 Jul 2025 12:16:44 -0500 Subject: [PATCH] Fixing whatsapp FMA app version (#31119) Fixes #31185 whatsapp prefixes their version with '2.'. Either this ia a platform code or some less relevant bit we can drop. It is fairly consistent when looking through version history. # Checklist for submitter If some of the following don't apply, delete the relevant line. - [x] Changes file added for user-visible changes in `changes/`, `orbit/changes/` or `ee/fleetd-chrome/changes`. See [Changes files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files) for more information. - [x] Added/updated automated tests - [x] Manual QA for all new/changed functionality --- .../ingesters/homebrew/external_refs/main.go | 1 + .../whats_app_version_shortener.go | 20 +++++++++++++ .../whats_app_version_shortener_test.go | 30 +++++++++++++++++++ .../outputs/whatsapp/darwin.json | 2 +- 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener.go create mode 100644 ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go diff --git a/ee/maintained-apps/ingesters/homebrew/external_refs/main.go b/ee/maintained-apps/ingesters/homebrew/external_refs/main.go index fe2398299d..8180d51004 100644 --- a/ee/maintained-apps/ingesters/homebrew/external_refs/main.go +++ b/ee/maintained-apps/ingesters/homebrew/external_refs/main.go @@ -9,6 +9,7 @@ import ( var Funcs = map[string][]func(*maintained_apps.FMAManifestApp) (*maintained_apps.FMAManifestApp, error){ "microsoft-word/darwin": {MicrosoftVersionFromReleaseNotes}, "microsoft-excel/darwin": {MicrosoftVersionFromReleaseNotes}, + "whatsapp/darwin": {WhatsAppVersionShortener}, "google-chrome/darwin": {ChromePKGInstaller}, } diff --git a/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener.go b/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener.go new file mode 100644 index 0000000000..19559c0240 --- /dev/null +++ b/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener.go @@ -0,0 +1,20 @@ +package externalrefs + +import ( + "fmt" + "strings" + + maintained_apps "github.com/fleetdm/fleet/v4/ee/maintained-apps" +) + +func WhatsAppVersionShortener(app *maintained_apps.FMAManifestApp) (*maintained_apps.FMAManifestApp, error) { + homebrewVersion := app.Version + + if strings.HasPrefix(homebrewVersion, "2.") { + app.Version = strings.TrimPrefix(homebrewVersion, "2.") + } else { + return app, fmt.Errorf("Expected WhatsApp version to start with '2.' but found '%s'", homebrewVersion) + } + + return app, nil +} diff --git a/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go b/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go new file mode 100644 index 0000000000..2b72c1faed --- /dev/null +++ b/ee/maintained-apps/ingesters/homebrew/external_refs/whats_app_version_shortener_test.go @@ -0,0 +1,30 @@ +package externalrefs + +import ( + "testing" + + maintained_apps "github.com/fleetdm/fleet/v4/ee/maintained-apps" + "github.com/stretchr/testify/assert" +) + +func TestWhatsAppVersionShortener(t *testing.T) { + t.Run("successful version found", func(t *testing.T) { + app := &maintained_apps.FMAManifestApp{ + UniqueIdentifier: "whatsapp/darwin", + Version: "2.25.16.81", + } + result, err := WhatsAppVersionShortener(app) + assert.NoError(t, err) + assert.Equal(t, "25.16.81", result.Version) + }) + + t.Run("unexpected version format", func(t *testing.T) { + app := &maintained_apps.FMAManifestApp{ + UniqueIdentifier: "whatsapp/darwin", + Version: "3.25.16.81", + } + result, err := WhatsAppVersionShortener(app) + assert.Error(t, err) + assert.Equal(t, "3.25.16.81", result.Version) + }) +} diff --git a/ee/maintained-apps/outputs/whatsapp/darwin.json b/ee/maintained-apps/outputs/whatsapp/darwin.json index 641592ffdb..1d7565e137 100644 --- a/ee/maintained-apps/outputs/whatsapp/darwin.json +++ b/ee/maintained-apps/outputs/whatsapp/darwin.json @@ -1,7 +1,7 @@ { "versions": [ { - "version": "2.25.17.82", + "version": "25.17.82", "queries": { "exists": "SELECT 1 FROM apps WHERE bundle_identifier = 'net.whatsapp.WhatsApp';" },