package service import ( "testing" "github.com/fleetdm/fleet/v4/server/fleet" "github.com/stretchr/testify/require" ) func TestValidateWindowsProfileFleetVariablesLicense(t *testing.T) { t.Parallel() profileWithVars := ` ./Device/Vendor/MSFT/Accounts/DomainName Host UUID: $FLEET_VAR_HOST_UUID ` // Test with free license freeLic := &fleet.LicenseInfo{Tier: fleet.TierFree} _, err := validateWindowsProfileFleetVariables(profileWithVars, freeLic, nil) require.ErrorIs(t, err, fleet.ErrMissingLicense) // Test with premium license premiumLic := &fleet.LicenseInfo{Tier: fleet.TierPremium} vars, err := validateWindowsProfileFleetVariables(profileWithVars, premiumLic, nil) require.NoError(t, err) require.Contains(t, vars, "HOST_UUID") // Test profile without variables (should work with free license) profileNoVars := ` ./Device/Vendor/MSFT/Accounts/DomainName Static Value ` vars, err = validateWindowsProfileFleetVariables(profileNoVars, freeLic, nil) require.NoError(t, err) require.Nil(t, vars) } func TestValidateWindowsProfileFleetVariables(t *testing.T) { tests := []struct { name string profileXML string wantErr bool errContains string }{ { name: "no variables", profileXML: ` ./Device/Vendor/MSFT/Policy/Config/System/AllowLocation 1 `, wantErr: false, }, { name: "HOST_UUID variable", profileXML: ` ./Device/Vendor/MSFT/Policy/Config/System/AllowLocation $FLEET_VAR_HOST_UUID `, wantErr: false, }, { name: "HOST_UUID variable with braces", profileXML: ` ./Device/Vendor/MSFT/Policy/Config/System/AllowLocation ${FLEET_VAR_HOST_UUID} `, wantErr: false, }, { name: "multiple HOST_UUID variables", profileXML: ` ./Device/Vendor/MSFT/Policy/Config/System/AllowLocation $FLEET_VAR_HOST_UUID-${FLEET_VAR_HOST_UUID} `, wantErr: false, }, { name: "unsupported variable", profileXML: ` ./Device/Vendor/MSFT/Policy/Config/System/AllowLocation $FLEET_VAR_HOST_FAKE `, wantErr: true, errContains: "Fleet variable $FLEET_VAR_HOST_FAKE is not supported in Windows profiles", }, { name: "HOST_UUID with another unsupported variable", profileXML: ` ./Device/Vendor/MSFT/Policy/Config/System/AllowLocation $FLEET_VAR_HOST_UUID-$FLEET_VAR_BOGUS_VAR `, wantErr: true, errContains: "Fleet variable $FLEET_VAR_BOGUS_VAR is not supported in Windows profiles", }, { name: "unknown Fleet variable", profileXML: ` ./Device/Vendor/MSFT/Policy/Config/System/AllowLocation ${FLEET_VAR_UNKNOWN_VAR} `, wantErr: true, errContains: "Fleet variable $FLEET_VAR_UNKNOWN_VAR is not supported in Windows profiles", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { // Pass a premium license for testing (we're not testing license validation here) premiumLic := &fleet.LicenseInfo{Tier: fleet.TierPremium} _, err := validateWindowsProfileFleetVariables(tt.profileXML, premiumLic, nil) if tt.wantErr { require.Error(t, err) if tt.errContains != "" { require.Contains(t, err.Error(), tt.errContains) } } else { require.NoError(t, err) } }) } }