From 1dc8cdbebba5e9fa02ddf79cda7619d6516d4809 Mon Sep 17 00:00:00 2001 From: andronache Date: Tue, 4 May 2021 12:09:36 +0300 Subject: [PATCH] Added tests for DateTime case in ParseField function --- agents/agentreq_test.go | 233 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 232 insertions(+), 1 deletion(-) diff --git a/agents/agentreq_test.go b/agents/agentreq_test.go index ab666a610..b1ef52060 100644 --- a/agents/agentreq_test.go +++ b/agents/agentreq_test.go @@ -2221,7 +2221,7 @@ func TestFieldAsInterface(t *testing.T) { } } -func TestAgentRequestParseFieldDateTime(t *testing.T) { +func TestAgentRequestParseFieldDateTimeDaily(t *testing.T) { tntTpl := config.NewRSRParsersMustCompile("*daily", utils.InfieldSep) AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil) fctTemp := &config.FCTemplate{ @@ -2249,3 +2249,234 @@ func TestAgentRequestParseFieldDateTime(t *testing.T) { t.Errorf("Expected %v but received %v", finRes.Day(), expected.Day()) } } + +func TestAgentRequestParseFieldDateTimeTimeZone(t *testing.T) { + tntTpl := config.NewRSRParsersMustCompile("*daily", utils.InfieldSep) + AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil) + fctTemp := &config.FCTemplate{Type: utils.MetaDateTime, + Value: config.NewRSRParsersMustCompile("*daily", utils.InfieldSep), + Layout: "“Mon Jan _2 15:04:05 2006”", + Timezone: "Local", + } + + result, err := AgentReq.ParseField(fctTemp) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + + expected, err := utils.ParseTimeDetectLayout("*daily", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone)) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + strRes := fmt.Sprintf("%v", result) + finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + if !reflect.DeepEqual(finRes.Day(), expected.Day()) { + t.Errorf("Expected %v but received %v", finRes.Day(), expected.Day()) + } +} + +func TestAgentRequestParseFieldDateTimeMonthly(t *testing.T) { + tntTpl := config.NewRSRParsersMustCompile("*monthly", utils.InfieldSep) + AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil) + fctTemp := &config.FCTemplate{Type: utils.MetaDateTime, + Value: config.NewRSRParsersMustCompile("*monthly", utils.InfieldSep), + Layout: "“Mon Jan _2 15:04:05 2006”", + Timezone: "Local", + } + + result, err := AgentReq.ParseField(fctTemp) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + + expected, err := utils.ParseTimeDetectLayout("*monthly", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone)) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + strRes := fmt.Sprintf("%v", result) + finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + if !reflect.DeepEqual(finRes.Month(), expected.Month()) { + t.Errorf("Expected %v but received %v", finRes.Month(), expected.Month()) + } +} + +func TestAgentRequestParseFieldDateTimeMonthlyEstimated(t *testing.T) { + tntTpl := config.NewRSRParsersMustCompile("*monthly_estimated", utils.InfieldSep) + AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil) + fctTemp := &config.FCTemplate{Type: utils.MetaDateTime, + Value: config.NewRSRParsersMustCompile("*monthly_estimated", utils.InfieldSep), + Layout: "“Mon Jan _2 15:04:05 2006”", + Timezone: "Local", + } + + result, err := AgentReq.ParseField(fctTemp) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + + expected, err := utils.ParseTimeDetectLayout("*monthly_estimated", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone)) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + strRes := fmt.Sprintf("%v", result) + finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + if !reflect.DeepEqual(finRes.Month(), expected.Month()) { + t.Errorf("Expected %v but received %v", finRes.Month(), expected.Month()) + } +} + +func TestAgentRequestParseFieldDateTimeYearly(t *testing.T) { + tntTpl := config.NewRSRParsersMustCompile("*yearly", utils.InfieldSep) + AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil) + fctTemp := &config.FCTemplate{Type: utils.MetaDateTime, + Value: config.NewRSRParsersMustCompile("*yearly", utils.InfieldSep), + Layout: "“Mon Jan _2 15:04:05 2006”", + Timezone: "Local", + } + + result, err := AgentReq.ParseField(fctTemp) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + + expected, err := utils.ParseTimeDetectLayout("*yearly", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone)) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + strRes := fmt.Sprintf("%v", result) + finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + if !reflect.DeepEqual(finRes.Year(), expected.Year()) { + t.Errorf("Expected %v but received %v", finRes.Year(), expected.Year()) + } +} + +func TestAgentRequestParseFieldDateTimeMetaUnlimited(t *testing.T) { + tntTpl := config.NewRSRParsersMustCompile(utils.MetaUnlimited, utils.InfieldSep) + AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil) + fctTemp := &config.FCTemplate{Type: utils.MetaDateTime, + Value: config.NewRSRParsersMustCompile(utils.MetaUnlimited, utils.InfieldSep), + Layout: "“Mon Jan _2 15:04:05 2006”", + Timezone: "Local", + } + + result, err := AgentReq.ParseField(fctTemp) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + + expected, err := utils.ParseTimeDetectLayout(utils.MetaUnlimited, utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone)) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + strRes := fmt.Sprintf("%v", result) + finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + if !reflect.DeepEqual(finRes.Day(), expected.Day()) { + t.Errorf("Expected %v but received %v", finRes.Day(), expected.Day()) + } +} + +func TestAgentRequestParseFieldDateTimeEmpty(t *testing.T) { + tntTpl := config.NewRSRParsersMustCompile("", utils.InfieldSep) + AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil) + fctTemp := &config.FCTemplate{Type: utils.MetaDateTime, + Value: config.NewRSRParsersMustCompile("", utils.InfieldSep), + Layout: "“Mon Jan _2 15:04:05 2006”", + Timezone: "Local", + } + + result, err := AgentReq.ParseField(fctTemp) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + + expected, err := utils.ParseTimeDetectLayout("", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone)) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + strRes := fmt.Sprintf("%v", result) + finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + if !reflect.DeepEqual(finRes.Day(), expected.Day()) { + t.Errorf("Expected %v but received %v", finRes.Day(), expected.Day()) + } +} + +func TestAgentRequestParseFieldDateTimeMonthEnd(t *testing.T) { + tntTpl := config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep) + AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil) + fctTemp := &config.FCTemplate{Type: utils.MetaDateTime, + Value: config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep), + Layout: "“Mon Jan _2 15:04:05 2006”", + Timezone: "Local", + } + + result, err := AgentReq.ParseField(fctTemp) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + + expected, err := utils.ParseTimeDetectLayout("*month_endTest", utils.FirstNonEmpty(fctTemp.Timezone, config.CgrConfig().GeneralCfg().DefaultTimezone)) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + strRes := fmt.Sprintf("%v", result) + finRes, err := time.Parse("“Mon Jan _2 15:04:05 2006”", strRes) + if err != nil { + t.Errorf("Expected %v but received %v", nil, err) + } + if !reflect.DeepEqual(finRes.Day(), expected.Day()) { + t.Errorf("Expected %v but received %v", finRes.Day(), expected.Day()) + } +} + +func TestAgentRequestParseFieldDateTimeError(t *testing.T) { + tntTpl := config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep) + AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, tntTpl, "", "", nil, nil, nil) + fctTemp := &config.FCTemplate{Type: utils.MetaDateTime, + Value: config.NewRSRParsersMustCompile("*month_endTest", utils.InfieldSep), + Layout: "“Mon Jan _2 15:04:05 2006”", + Timezone: "/", + } + + _, err := AgentReq.ParseField(fctTemp) + expected := "time: invalid location name" + if err == nil || err.Error() != expected { + t.Errorf("Expected <%+v> but received <%+v>", expected, err) + } +} + +func TestAgentRequestParseFieldDateTimeError2(t *testing.T) { + prsr, err := config.NewRSRParsersFromSlice([]string{"2.", "~*req.CGRID<~*opts.Converter>"}) + if err != nil { + t.Fatal(err) + } + AgentReq := NewAgentRequest(utils.MapStorage{}, nil, nil, nil, nil, prsr, "", "", nil, nil, nil) + fctTemp := &config.FCTemplate{Type: utils.MetaDateTime, + Value: prsr, + Layout: "“Mon Jan _2 15:04:05 2006”", + Timezone: "/", + } + + _, err = AgentReq.ParseField(fctTemp) + expected := utils.ErrNotFound + if err == nil || err != expected { + t.Errorf("Expected <%+v> but received <%+v>", expected, err) + } +}