Skip to content

Commit 86607fd

Browse files
APIGOV-26035 - Fix to guard owner.type check when not set in the resource (#670)
1 parent c840b9c commit 86607fd

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

pkg/apic/apiserver/models/api/v1/owner.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func (o *Owner) MarshalJSON() ([]byte, error) {
4646
var t string
4747
var ok bool
4848
if t, ok = ownerTypeToString[o.Type]; !ok {
49-
return nil, fmt.Errorf("unknown owner type %d", o.Type)
49+
t = ownerTypeToString[TeamOwner]
5050
}
5151

5252
aux := struct {
@@ -74,11 +74,15 @@ func (o *Owner) UnmarshalJSON(bytes []byte) error {
7474
return err
7575
}
7676

77-
ownerString, ok := ownerTypeFromString[aux.Type]
78-
if !ok {
79-
return fmt.Errorf("unknown owner type %s", aux.Type)
77+
ownerType := TeamOwner
78+
if aux.Type != "" {
79+
var ok bool
80+
ownerType, ok = ownerTypeFromString[aux.Type]
81+
if !ok {
82+
return fmt.Errorf("unknown owner type %s", aux.Type)
83+
}
8084
}
81-
o.Type = ownerString
85+
o.Type = ownerType
8286
o.ID = aux.ID
8387
o.Organization = aux.Organization
8488

pkg/apic/apiserver/models/api/v1/owner_test.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99

1010
func TestOwner_MarshalJSON(t *testing.T) {
1111
o := &Owner{}
12-
o.SetType(TeamOwner)
1312
o.SetID("123")
1413

1514
b, err := o.MarshalJSON()
@@ -21,7 +20,26 @@ func TestOwner_MarshalJSON(t *testing.T) {
2120
assert.Equal(t, o.Type, o2.Type)
2221
assert.Equal(t, o.ID, o2.ID)
2322

23+
o = &Owner{}
24+
o.SetType(TeamOwner)
25+
o.SetID("123")
26+
27+
b, err = o.MarshalJSON()
28+
assert.Nil(t, err)
29+
30+
o2 = &Owner{}
31+
err = json.Unmarshal(b, o2)
32+
assert.Nil(t, err)
33+
assert.Equal(t, o.Type, o2.Type)
34+
assert.Equal(t, o.ID, o2.ID)
35+
2436
invalid := []byte(`{"type":"fake","id":"123"}`)
2537
err = json.Unmarshal(invalid, o2)
2638
assert.NotNilf(t, err, "should fail when given an invalid type")
39+
40+
validNoOwnerType := []byte(`{"id":"123"}`)
41+
err = json.Unmarshal(validNoOwnerType, o2)
42+
assert.Nil(t, err)
43+
assert.Equal(t, o.Type, TeamOwner)
44+
assert.Equal(t, o.ID, o2.ID)
2745
}

0 commit comments

Comments
 (0)