Skip to content

Commit

Permalink
Guarantees the AdditionalProperties map is not nil
Browse files Browse the repository at this point in the history
Resolves #13
  • Loading branch information
Steve Moyer committed Jun 4, 2019
1 parent 9e3579f commit d2013ce
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
4 changes: 4 additions & 0 deletions scim/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,10 @@ func (ca *CommonAttributes) HasExtensionByURN(urn string) bool {
}

func (ca *CommonAttributes) putExtension(extension Extension) error {
if ca.AdditionalProperties == nil {
ca.AdditionalProperties = make(map[string]json.RawMessage)
}

urn := extension.URN()
var err error
var rawMessage json.RawMessage
Expand Down
26 changes: 26 additions & 0 deletions scim/resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,16 @@ func TestAddExtension(t *testing.T) {
assert.Equal(json.RawMessage("{}"), value)
}

func TestAddAndUpdateExtensionWithEmptyResource(t *testing.T) {
var ca CommonAttributes
var fakeExtension fakeExtension
var worthlessExtension worthlessExtension
assert.NoError(t, ca.AddExtension(fakeExtension))
assert.NoError(t, ca.AddExtension(worthlessExtension))
assert.NoError(t, ca.UpdateExtension(&fakeExtension))
assert.NoError(t, ca.UpdateExtension(&worthlessExtension))
}

func TestGetExtension(t *testing.T) {
assert := assert.New(t)
resource := getResourceWithAdditionalProperties()
Expand All @@ -104,6 +114,14 @@ func TestGetExtension(t *testing.T) {
assert.Nil(err)
}

func TestGetExtensionWithEmptyResource(t *testing.T) {
var ca CommonAttributes
var fakeExtension fakeExtension
var worthlessExtension worthlessExtension
assert.Error(t, ca.GetExtension(&fakeExtension))
assert.Error(t, ca.GetExtension(&worthlessExtension))
}

func TestGetExtensionURNs(t *testing.T) {
assert := assert.New(t)
resource := getResourceWithAdditionalProperties()
Expand All @@ -129,6 +147,14 @@ func TestHasExtension(t *testing.T) {
assert.False(resource.HasExtension(worthlessExtension))
}

func TestHasExtensionWithEmptyResource(t *testing.T) {
var ca CommonAttributes
var fakeExtension fakeExtension
var worthlessExtension worthlessExtension
assert.False(t, ca.HasExtension((fakeExtension)))
assert.False(t, ca.HasExtension(worthlessExtension))
}

func TestRemoveExtension(t *testing.T) {
assert := assert.New(t)
require := require.New(t)
Expand Down

0 comments on commit d2013ce

Please sign in to comment.