Merge pull request #1806 from adragusin/master

Updated tests in utils
This commit is contained in:
Dan Christian Bogos
2019-12-06 09:25:11 +01:00
committed by GitHub
3 changed files with 201 additions and 9 deletions

View File

@@ -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)
}
}

View File

@@ -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
}

View File

@@ -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) {