mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
@@ -1276,11 +1276,36 @@ func TestFFNNewFallbackFileNameFronString(t *testing.T) {
|
||||
} else if !reflect.DeepEqual(eFFN, ffn) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", eFFN, ffn)
|
||||
}
|
||||
fileName = "***|"
|
||||
if _, err := NewFallbackFileNameFronString(fileName); err == nil || err.Error() != "unsupported module: ***" {
|
||||
t.Error(err)
|
||||
}
|
||||
fileName = "act>*call_url|***|"
|
||||
if _, err := NewFallbackFileNameFronString(fileName); err == nil || err.Error() != "unsupported transport in fallback file path: act>*call_url|***|" {
|
||||
t.Error(err)
|
||||
}
|
||||
fileName = "act>*call_url|*http_json|***"
|
||||
if _, err := NewFallbackFileNameFronString(fileName); err == nil || err.Error() != "cannot find request ID in fallback file path: act>*call_url|*http_json|***" {
|
||||
t.Error(err)
|
||||
}
|
||||
fileName = "act>*call_url|*http_json|%|.json"
|
||||
if _, err := NewFallbackFileNameFronString(fileName); err == nil || err.Error() != `invalid URL escape "%"` {
|
||||
t.Error(err)
|
||||
}
|
||||
fileName = "act>*call_url|*http_json|http%3A%2F%2Flocalhost%3A2080%2Flog_warning|.test"
|
||||
if _, err := NewFallbackFileNameFronString(fileName); err == nil || err.Error() != "unsupported suffix in fallback file path: act>*call_url|*http_json|http%3A%2F%2Flocalhost%3A2080%2Flog_warning|.test" {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestFFNFallbackFileNameAsString(t *testing.T) {
|
||||
ffn := &FallbackFileName{}
|
||||
if rcv := ffn.AsString(); rcv != "|||" {
|
||||
t.Errorf("Expecting |||, received: <%+q>", rcv)
|
||||
}
|
||||
eFn := "cdr|*http_json_cdr|http%3A%2F%2F127.0.0.1%3A12080%2Finvalid_json|1acce2c9-3f2d-4774-8662-c28872dad515.json"
|
||||
ffn := &FallbackFileName{
|
||||
ffn = &FallbackFileName{
|
||||
Module: "cdr",
|
||||
Transport: MetaHTTPjsonCDR,
|
||||
Address: "http://127.0.0.1:12080/invalid_json",
|
||||
@@ -1290,3 +1315,58 @@ func TestFFNFallbackFileNameAsString(t *testing.T) {
|
||||
t.Errorf("Expecting: <%q>, received: <%q>", eFn, ffnStr)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReverseString(t *testing.T) {
|
||||
if rcv := ReverseString(EmptyString); rcv != EmptyString {
|
||||
t.Errorf("Expecting <%+q>, received: <%+q>", EmptyString, rcv)
|
||||
}
|
||||
if rcv := ReverseString("test"); rcv != "tset" {
|
||||
t.Errorf("Expecting <tset>, received: <%+q>", rcv)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetUrlRawArguments(t *testing.T) {
|
||||
eOut := map[string]string{}
|
||||
if rcv := GetUrlRawArguments(EmptyString); !reflect.DeepEqual(rcv, eOut) {
|
||||
t.Errorf("Expectinc: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
if rcv := GetUrlRawArguments("test"); !reflect.DeepEqual(rcv, eOut) {
|
||||
t.Errorf("Expectinc: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
if rcv := GetUrlRawArguments("test?"); !reflect.DeepEqual(rcv, eOut) {
|
||||
t.Errorf("Expectinc: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
eOut = map[string]string{"test": "1"}
|
||||
if rcv := GetUrlRawArguments("?test=1"); !reflect.DeepEqual(rcv, eOut) {
|
||||
t.Errorf("Expectinc: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
eOut = map[string]string{"test": "1", "test2": "2"}
|
||||
if rcv := GetUrlRawArguments("?test=1&test2=2"); !reflect.DeepEqual(rcv, eOut) {
|
||||
t.Errorf("Expectinc: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
eOut = map[string]string{"test": "1", "test2": "2", EmptyString: "5"}
|
||||
if rcv := GetUrlRawArguments("?test=1&test2=2&=5"); !reflect.DeepEqual(rcv, eOut) {
|
||||
t.Errorf("Expectinc: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
eOut = map[string]string{"test": "1", "test2": "2"}
|
||||
if rcv := GetUrlRawArguments("?test=1&test2=2&5"); !reflect.DeepEqual(rcv, eOut) {
|
||||
t.Errorf("Expectinc: %+v, received: %+v", eOut, rcv)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWarnExecTime(t *testing.T) {
|
||||
//without Log
|
||||
WarnExecTime(time.Now(), "MyTestFunc", time.Duration(1*time.Second))
|
||||
//With Log
|
||||
WarnExecTime(time.Now(), "MyTestFunc", time.Duration(1*time.Nanosecond))
|
||||
}
|
||||
|
||||
func TestCastRPCErr(t *testing.T) {
|
||||
err := errors.New("test")
|
||||
if rcv := CastRPCErr(err); rcv != err {
|
||||
t.Errorf("Expecting: %+q, received %+q", err, rcv)
|
||||
}
|
||||
if rcv := CastRPCErr(ErrNoMoreData); rcv.Error() != ErrNoMoreData.Error() {
|
||||
t.Errorf("Expecting: %+v, received %+v", ErrNoMoreData.Error(), rcv)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,8 +48,7 @@ type DataConverter interface {
|
||||
}
|
||||
|
||||
// NewDataConverter is a factory of converters
|
||||
func NewDataConverter(params string) (
|
||||
conv DataConverter, err error) {
|
||||
func NewDataConverter(params string) (conv DataConverter, err error) {
|
||||
switch {
|
||||
case params == MetaDurationSeconds:
|
||||
return NewDurationSecondsConverter("")
|
||||
@@ -73,11 +72,12 @@ func NewDataConverter(params string) (
|
||||
case params == MetaDuration:
|
||||
return NewDurationConverter("")
|
||||
case strings.HasPrefix(params, MetaLibPhoneNumber):
|
||||
if len(params) == len(MetaLibPhoneNumber) {
|
||||
return NewPhoneNumberConverter("")
|
||||
}
|
||||
return NewPhoneNumberConverter(params[len(MetaLibPhoneNumber)+1:])
|
||||
default:
|
||||
return nil,
|
||||
fmt.Errorf("unsupported converter definition: <%s>",
|
||||
params)
|
||||
return nil, fmt.Errorf("unsupported converter definition: <%s>", params)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,8 +166,7 @@ func (rnd *RoundConverter) Convert(in interface{}) (
|
||||
return
|
||||
}
|
||||
|
||||
func NewMultiplyConverter(constructParams string) (
|
||||
hdlr DataConverter, err error) {
|
||||
func NewMultiplyConverter(constructParams string) (hdlr DataConverter, err error) {
|
||||
if constructParams == "" {
|
||||
return nil, ErrMandatoryIeMissingNoCaps
|
||||
}
|
||||
|
||||
@@ -25,18 +25,128 @@ import (
|
||||
"github.com/nyaruka/phonenumbers"
|
||||
)
|
||||
|
||||
func TestDataConvertersConvertString(t *testing.T) {
|
||||
dcs := &DataConverters{}
|
||||
if rcv, err := dcs.ConvertString(EmptyString); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv != EmptyString {
|
||||
t.Errorf("Expecting: <%+q>, received: <%+q>", EmptyString, rcv)
|
||||
}
|
||||
if rcv, err := dcs.ConvertString("test"); err != nil {
|
||||
t.Error(err)
|
||||
} else if rcv != "test" {
|
||||
t.Errorf("Expecting: <test>, received: <%+q>", rcv)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewDataConverter(t *testing.T) {
|
||||
a, err := NewDataConverter(MetaDurationSeconds)
|
||||
if err != nil {
|
||||
t.Error(err.Error())
|
||||
}
|
||||
b, err := NewDurationSecondsConverter("")
|
||||
b, err := NewDurationSecondsConverter(EmptyString)
|
||||
if err != nil {
|
||||
t.Error(err.Error())
|
||||
}
|
||||
if !reflect.DeepEqual(a, b) {
|
||||
t.Error("Error reflect")
|
||||
}
|
||||
a, err = NewDataConverter(MetaDuration)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
b, err = NewDurationConverter(EmptyString)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !reflect.DeepEqual(a, b) {
|
||||
t.Error("Error reflect")
|
||||
}
|
||||
a, err = NewDataConverter(MetaDurationNanoseconds)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
b, err = NewDurationNanosecondsConverter(EmptyString)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !reflect.DeepEqual(a, b) {
|
||||
t.Error("Error reflect")
|
||||
}
|
||||
a, err = NewDataConverter(MetaRound)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
b, err = NewRoundConverter(EmptyString)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !reflect.DeepEqual(a, b) {
|
||||
t.Error("Error reflect")
|
||||
}
|
||||
a, err = NewDataConverter("*round:07")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
b, err = NewRoundConverter("7")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !reflect.DeepEqual(a, b) {
|
||||
t.Error("Error reflect")
|
||||
}
|
||||
if a, err = NewDataConverter(MetaMultiply); err == nil || err != ErrMandatoryIeMissingNoCaps {
|
||||
t.Error(err)
|
||||
}
|
||||
a, err = NewDataConverter("*multiply:3.3")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
b, err = NewMultiplyConverter("3.3")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !reflect.DeepEqual(a, b) {
|
||||
t.Error("Error reflect")
|
||||
}
|
||||
if a, err = NewDataConverter(MetaDivide); err == nil || err != ErrMandatoryIeMissingNoCaps {
|
||||
t.Error(err)
|
||||
}
|
||||
a, err = NewDataConverter("*divide:3.3")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
b, err = NewDivideConverter("3.3")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !reflect.DeepEqual(a, b) {
|
||||
t.Error("Error reflect")
|
||||
}
|
||||
if a, err = NewDataConverter(MetaLibPhoneNumber); err == nil || err.Error() != "unsupported *libphonenumber converter parameters: <>" {
|
||||
t.Error(err)
|
||||
}
|
||||
a, err = NewDataConverter("*libphonenumber:US")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
b, err = NewPhoneNumberConverter("US")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if !reflect.DeepEqual(a, b) {
|
||||
t.Error("Error reflect")
|
||||
}
|
||||
if _, err := NewDataConverter("unsupported"); err == nil || err.Error() != "unsupported converter definition: <unsupported>" {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestNewDataConverterMustCompile(t *testing.T) {
|
||||
eOut, _ := NewDataConverter(MetaDurationSeconds)
|
||||
if rcv := NewDataConverterMustCompile(MetaDurationSeconds); rcv != eOut {
|
||||
t.Errorf("Expecting: received: %+q", rcv)
|
||||
}
|
||||
}
|
||||
|
||||
func TestConvertFloatToSeconds(t *testing.T) {
|
||||
@@ -199,6 +309,9 @@ func TestDivideConverter(t *testing.T) {
|
||||
} else if !reflect.DeepEqual(expOut, out) {
|
||||
t.Errorf("expecting: %+v, received: %+v", expOut, out)
|
||||
}
|
||||
if _, err := eDvd.Convert("strionmg"); err == nil || err.Error() != `strconv.ParseFloat: parsing "strionmg": invalid syntax` {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDurationConverter(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user