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';" },