This is an automated email from the ASF dual-hosted git repository.

dewrich pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new 6fc4c70  Properly unmarshal null DeepCachingType value as "NEVER"
6fc4c70 is described below

commit 6fc4c70d8aacbfff3c846375970c7b924e32bbf5
Author: Rawlin Peters <rawlin_pet...@comcast.com>
AuthorDate: Fri Apr 13 14:18:56 2018 -0600

    Properly unmarshal null DeepCachingType value as "NEVER"
---
 lib/go-tc/enum.go      |  4 ++++
 lib/go-tc/enum_test.go | 14 ++++++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/lib/go-tc/enum.go b/lib/go-tc/enum.go
index da9dcf1..d7991b7 100644
--- a/lib/go-tc/enum.go
+++ b/lib/go-tc/enum.go
@@ -224,6 +224,10 @@ func DeepCachingTypeFromString(s string) DeepCachingType {
 
 // UnmarshalJSON unmarshals a JSON representation of a DeepCachingType (i.e. a 
string) or returns an error if the DeepCachingType is invalid
 func (t *DeepCachingType) UnmarshalJSON(data []byte) error {
+       if string(data) == "null" {
+               *t = DeepCachingTypeNever
+               return nil
+       }
        s, err := strconv.Unquote(string(data))
        if err != nil {
                return errors.New(string(data) + " JSON not quoted")
diff --git a/lib/go-tc/enum_test.go b/lib/go-tc/enum_test.go
index e11e35b..95fb64a 100644
--- a/lib/go-tc/enum_test.go
+++ b/lib/go-tc/enum_test.go
@@ -63,13 +63,23 @@ func TestDeepCachingType(t *testing.T) {
 
        // make sure we get the right default when marshalled within a new 
delivery service
        var ds DeliveryService
-       txt, err := json.MarshalIndent(ds, ``, `  `)
+       _, err := json.MarshalIndent(ds, ``, `  `)
        if err != nil {
                t.Errorf(err.Error())
        }
-       t.Log(string(txt))
        c = ds.DeepCachingType.String()
        if c != "NEVER" {
                t.Errorf(`Default "%s" expected to be "NEVER"`, c)
        }
+
+       // make sure null values are handled properly
+       byt := []byte(`{"deepCachingType": null}`)
+       err = json.Unmarshal(byt, &ds)
+       if err != nil {
+               t.Errorf(`Expected to be able to unmarshall a null 
deepCachingType as "NEVER", instead got error "%v"`, err.Error())
+       }
+       c = ds.DeepCachingType.String()
+       if c != "NEVER" {
+               t.Errorf(`null deepCachingType expected to be "NEVER", got 
"%s"`, c)
+       }
 }

-- 
To stop receiving notification emails like this one, please contact
dewr...@apache.org.

Reply via email to