From d622d49e77ad18150aec48d8ca5e057ddad5deb9 Mon Sep 17 00:00:00 2001 From: TeoV Date: Tue, 21 Aug 2018 11:00:26 -0400 Subject: [PATCH] Update checking for Attributes --- apier/v1/attributes.go | 6 +++--- apier/v1/attributes_it_test.go | 32 ++++++++++++++++++++++++++++++++ utils/rsrparser.go | 4 +++- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/apier/v1/attributes.go b/apier/v1/attributes.go index d402c47ee..23c528641 100644 --- a/apier/v1/attributes.go +++ b/apier/v1/attributes.go @@ -62,11 +62,11 @@ func (apierV1 *ApierV1) SetAttributeProfile(alsPrf *engine.AttributeProfile, rep if len(alsPrf.Attributes) != 0 { for _, attr := range alsPrf.Attributes { for _, sub := range attr.Substitute { - if missing := utils.MissingStructFields(sub, []string{"Rules"}); len(missing) != 0 { - return utils.NewErrMandatoryIeMissing(missing...) + if sub.Rules == "" { + return utils.NewErrMandatoryIeMissing("Rules") } if err := sub.Compile(); err != nil { - return err + return utils.NewErrServerError(err) } } } diff --git a/apier/v1/attributes_it_test.go b/apier/v1/attributes_it_test.go index f0f90f9ad..caed2faad 100644 --- a/apier/v1/attributes_it_test.go +++ b/apier/v1/attributes_it_test.go @@ -65,6 +65,7 @@ var sTestsAlsPrf = []func(t *testing.T){ testAttributeSRemAlsPrf, testAttributeSSetAlsPrf2, testAttributeSSetAlsPrf3, + testAttributeSSetAlsPrf4, testAttributeSPing, testAttributeSKillEngine, } @@ -760,6 +761,37 @@ func testAttributeSSetAlsPrf2(t *testing.T) { } func testAttributeSSetAlsPrf3(t *testing.T) { + alsPrf = &engine.AttributeProfile{ + Tenant: "golant", + ID: "ATTR_972587832508_SESSIONAUTH", + Contexts: []string{utils.MetaSessionS}, + FilterIDs: []string{"*string:Account:972587832508"}, + ActivationInterval: &utils.ActivationInterval{ + ActivationTime: time.Date(2014, 7, 14, 14, 35, 0, 0, time.UTC), + ExpiryTime: time.Date(2014, 7, 14, 14, 35, 0, 0, time.UTC), + }, + Attributes: []*engine.Attribute{ + &engine.Attribute{ + FieldName: utils.Subject, + Initial: utils.ANY, + Substitute: utils.RSRParsers{ + &utils.RSRParser{ + Rules: "", + }, + }, + Append: false, + }, + }, + Blocker: false, + Weight: 10, + } + var result string + if err := attrSRPC.Call("ApierV1.SetAttributeProfile", alsPrf, &result); err == nil { + t.Error(err) + } +} + +func testAttributeSSetAlsPrf4(t *testing.T) { alsPrf = &engine.AttributeProfile{ Tenant: "golant", ID: "ATTR_972587832508_SESSIONAUTH", diff --git a/utils/rsrparser.go b/utils/rsrparser.go index 02071cc37..b7f0123c9 100644 --- a/utils/rsrparser.go +++ b/utils/rsrparser.go @@ -189,7 +189,9 @@ func (prsr *RSRParser) Compile() (err error) { if newPrsr, err = NewRSRParser(prsr.Rules, prsr.AllFiltersMatch); err != nil { return } - *prsr = *newPrsr + if newPrsr != nil { + *prsr = *newPrsr + } return }