diff --git a/pkg/serviceaccounts/oidc_identities.go b/pkg/serviceaccounts/oidc_identities.go index 6307b9f8..cd13234c 100644 --- a/pkg/serviceaccounts/oidc_identities.go +++ b/pkg/serviceaccounts/oidc_identities.go @@ -15,7 +15,7 @@ type OIDCIdentityQuery struct { } type OIDCIdentity struct { - Audience string `json:"Audience"` + Audience string `json:"Audience,omitempty"` Issuer string `json:"Issuer"` Name string `json:"Name"` ServiceAccountID string `json:"ServiceAccountId"` diff --git a/pkg/serviceaccounts/oidc_identities_test.go b/pkg/serviceaccounts/oidc_identities_test.go new file mode 100644 index 00000000..89dc3610 --- /dev/null +++ b/pkg/serviceaccounts/oidc_identities_test.go @@ -0,0 +1,36 @@ +package serviceaccounts + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestOIDCIdentity_MarshalJSON_OmitsEmptyAudience(t *testing.T) { + identity := NewOIDCIdentity("ServiceAccounts-1", "name", "issuer", "subject") + + data, err := json.Marshal(identity) + assert.NoError(t, err) + + var result map[string]interface{} + err = json.Unmarshal(data, &result) + assert.NoError(t, err) + + _, hasAudience := result["Audience"] + assert.False(t, hasAudience, "Audience must be omitted from JSON when unset") +} + +func TestOIDCIdentity_MarshalJSON_IncludesAudienceWhenSet(t *testing.T) { + identity := NewOIDCIdentity("ServiceAccounts-1", "name", "issuer", "subject") + identity.Audience = "api://custom" + + data, err := json.Marshal(identity) + assert.NoError(t, err) + + var result map[string]interface{} + err = json.Unmarshal(data, &result) + assert.NoError(t, err) + + assert.Equal(t, "api://custom", result["Audience"]) +}