From 7a7037bb413c457774cd0c188ffabd6069ca5b00 Mon Sep 17 00:00:00 2001 From: Jimmy Mabey Date: Thu, 25 May 2017 16:33:53 -0300 Subject: [PATCH] Add Duration to EntityDescriptor.(Un)MarshalXML Also test validUntil unmarshalling in TestCanParseMetadata. --- metadata.go | 12 ++++++++---- metadata_test.go | 15 +++++++++------ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/metadata.go b/metadata.go index 2352278d..35eaf5e7 100644 --- a/metadata.go +++ b/metadata.go @@ -62,11 +62,13 @@ type EntityDescriptor struct { func (m *EntityDescriptor) MarshalXML(e *xml.Encoder, start xml.StartElement) error { type Alias EntityDescriptor aux := &struct { - ValidUntil RelaxedTime `xml:"validUntil,attr,omitempty"` + ValidUntil RelaxedTime `xml:"validUntil,attr,omitempty"` + CacheDuration Duration `xml:"cacheDuration,attr,omitempty"` *Alias }{ - ValidUntil: RelaxedTime(m.ValidUntil), - Alias: (*Alias)(m), + ValidUntil: RelaxedTime(m.ValidUntil), + CacheDuration: Duration(m.CacheDuration), + Alias: (*Alias)(m), } return e.Encode(aux) } @@ -75,7 +77,8 @@ func (m *EntityDescriptor) MarshalXML(e *xml.Encoder, start xml.StartElement) er func (m *EntityDescriptor) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { type Alias EntityDescriptor aux := &struct { - ValidUntil RelaxedTime `xml:"validUntil,attr,omitempty"` + ValidUntil RelaxedTime `xml:"validUntil,attr,omitempty"` + CacheDuration Duration `xml:"cacheDuration,attr,omitempty"` *Alias }{ Alias: (*Alias)(m), @@ -84,6 +87,7 @@ func (m *EntityDescriptor) UnmarshalXML(d *xml.Decoder, start xml.StartElement) return err } m.ValidUntil = time.Time(aux.ValidUntil) + m.CacheDuration = time.Duration(aux.CacheDuration) return nil } diff --git a/metadata_test.go b/metadata_test.go index a710fb22..9d1059b0 100644 --- a/metadata_test.go +++ b/metadata_test.go @@ -14,7 +14,7 @@ type MetadataTest struct{} var _ = Suite(&MetadataTest{}) func (s *MetadataTest) TestCanParseMetadata(c *C) { - buf := []byte(`Required attributes`) + buf := []byte(`Required attributes`) metadata := EntityDescriptor{} err := xml.Unmarshal(buf, &metadata) @@ -23,8 +23,10 @@ func (s *MetadataTest) TestCanParseMetadata(c *C) { var False = false var True = true c.Assert(metadata, DeepEquals, EntityDescriptor{ - EntityID: "https://dev.aa.kndr.org/users/auth/saml/metadata", - ID: "_af805d1c-c2e3-444e-9cf5-efc664eeace6", + EntityID: "https://dev.aa.kndr.org/users/auth/saml/metadata", + ID: "_af805d1c-c2e3-444e-9cf5-efc664eeace6", + ValidUntil: time.Date(2001, time.February, 3, 4, 5, 6, 789000000, time.UTC), + CacheDuration: time.Hour, SPSSODescriptors: []SPSSODescriptor{ SPSSODescriptor{ XMLName: xml.Name{Space: "urn:oasis:names:tc:SAML:2.0:metadata", Local: "SPSSODescriptor"}, @@ -90,8 +92,9 @@ func (s *MetadataTest) TestCanProduceSPMetadata(c *C) { AuthnRequestsSigned := true WantAssertionsSigned := true metadata := EntityDescriptor{ - EntityID: "http://localhost:5000/e087a985171710fb9fb30f30f41384f9/saml2/metadata/", - ValidUntil: validUntil, + EntityID: "http://localhost:5000/e087a985171710fb9fb30f30f41384f9/saml2/metadata/", + ValidUntil: validUntil, + CacheDuration: time.Hour, SPSSODescriptors: []SPSSODescriptor{ SPSSODescriptor{ AuthnRequestsSigned: &AuthnRequestsSigned, @@ -149,7 +152,7 @@ cvCsEFiJZ4AbF+DgmO6TarJ8O05t8zvnOwJlNCASPZRH/JmF8tX0hoHuAQ==`, buf, err := xml.MarshalIndent(metadata, "", " ") c.Assert(err, IsNil) c.Assert(string(buf), Equals, ""+ - "\n"+ + "\n"+ " \n"+ " \n"+ " \n"+