5849898283
Unit tests functional and coverage back to 100% Add more routes to dictionary, add more credentials, add default port 5554, rename cameradar logs ENV variable, improve unit test readability, remove tmp file
173 lines
3.8 KiB
Go
173 lines
3.8 KiB
Go
package objx_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/objx"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var TestMap = objx.Map{
|
|
"name": "Tyler",
|
|
"address": objx.Map{
|
|
"city": "Salt Lake City",
|
|
"state": "UT",
|
|
},
|
|
"numbers": []interface{}{"one", "two", "three", "four", "five"},
|
|
}
|
|
|
|
type Convertable struct {
|
|
name string
|
|
}
|
|
|
|
type Unconvertable struct {
|
|
name string
|
|
}
|
|
|
|
func (c *Convertable) MSI() map[string]interface{} {
|
|
return objx.Map{"name": c.name}
|
|
}
|
|
|
|
func TestMapCreation(t *testing.T) {
|
|
o := objx.New(nil)
|
|
assert.Nil(t, o)
|
|
|
|
o = objx.New("Tyler")
|
|
assert.Nil(t, o)
|
|
|
|
unconvertable := &Unconvertable{name: "Tyler"}
|
|
o = objx.New(unconvertable)
|
|
assert.Nil(t, o)
|
|
|
|
convertable := &Convertable{name: "Tyler"}
|
|
o = objx.New(convertable)
|
|
require.NotNil(t, convertable)
|
|
assert.Equal(t, "Tyler", o["name"])
|
|
|
|
o = objx.MSI()
|
|
assert.NotNil(t, o)
|
|
|
|
o = objx.MSI("name", "Tyler")
|
|
require.NotNil(t, o)
|
|
assert.Equal(t, o["name"], "Tyler")
|
|
|
|
o = objx.MSI(1, "a")
|
|
assert.Nil(t, o)
|
|
|
|
o = objx.MSI("a")
|
|
assert.Nil(t, o)
|
|
|
|
o = objx.MSI("a", "b", "c")
|
|
assert.Nil(t, o)
|
|
}
|
|
|
|
func TestMapValure(t *testing.T) {
|
|
m := objx.Map{
|
|
"a": 1,
|
|
}
|
|
v := m.Value()
|
|
|
|
assert.Equal(t, m, v.ObjxMap())
|
|
}
|
|
|
|
func TestMapMustFromJSONWithError(t *testing.T) {
|
|
_, err := objx.FromJSON(`"name":"Mat"}`)
|
|
assert.Error(t, err)
|
|
}
|
|
|
|
func TestMapFromJSON(t *testing.T) {
|
|
o := objx.MustFromJSON(`{"name":"Mat"}`)
|
|
|
|
require.NotNil(t, o)
|
|
assert.Equal(t, "Mat", o["name"])
|
|
}
|
|
|
|
func TestMapFromJSONWithError(t *testing.T) {
|
|
var m objx.Map
|
|
|
|
assert.Panics(t, func() {
|
|
m = objx.MustFromJSON(`"name":"Mat"}`)
|
|
})
|
|
assert.Nil(t, m)
|
|
}
|
|
|
|
func TestMapFromBase64String(t *testing.T) {
|
|
base64String := "eyJuYW1lIjoiTWF0In0="
|
|
o, err := objx.FromBase64(base64String)
|
|
|
|
require.NoError(t, err)
|
|
assert.Equal(t, o.Get("name").Str(), "Mat")
|
|
assert.Equal(t, objx.MustFromBase64(base64String).Get("name").Str(), "Mat")
|
|
}
|
|
|
|
func TestMapFromBase64StringWithError(t *testing.T) {
|
|
base64String := "eyJuYW1lIjoiTWFasd0In0="
|
|
_, err := objx.FromBase64(base64String)
|
|
|
|
assert.Error(t, err)
|
|
assert.Panics(t, func() {
|
|
objx.MustFromBase64(base64String)
|
|
})
|
|
}
|
|
|
|
func TestMapFromSignedBase64String(t *testing.T) {
|
|
base64String := "eyJuYW1lIjoiTWF0In0=_67ee82916f90b2c0d68c903266e8998c9ef0c3d6"
|
|
|
|
o, err := objx.FromSignedBase64(base64String, "key")
|
|
|
|
require.NoError(t, err)
|
|
assert.Equal(t, o.Get("name").Str(), "Mat")
|
|
assert.Equal(t, objx.MustFromSignedBase64(base64String, "key").Get("name").Str(), "Mat")
|
|
}
|
|
|
|
func TestMapFromSignedBase64StringWithError(t *testing.T) {
|
|
base64String := "eyJuYW1lasdIjoiTWF0In0=_67ee82916f90b2c0d68c903266e8998c9ef0c3d6"
|
|
_, err := objx.FromSignedBase64(base64String, "key")
|
|
assert.Error(t, err)
|
|
assert.Panics(t, func() {
|
|
objx.MustFromSignedBase64(base64String, "key")
|
|
})
|
|
|
|
base64String = "eyJuYW1lasdIjoiTWF0In0=67ee82916f90b2c0d68c903266e8998c9ef0c3d6"
|
|
_, err = objx.FromSignedBase64(base64String, "key")
|
|
assert.Error(t, err)
|
|
assert.Panics(t, func() {
|
|
objx.MustFromSignedBase64(base64String, "key")
|
|
})
|
|
|
|
base64String = "eyJuYW1lIjoiTWF0In0=_67ee82916f90b2c0d68c903266e8998c9ef0c3d6_junk"
|
|
_, err = objx.FromSignedBase64(base64String, "key")
|
|
assert.Error(t, err)
|
|
assert.Panics(t, func() {
|
|
objx.MustFromSignedBase64(base64String, "key")
|
|
})
|
|
}
|
|
|
|
func TestMapFromURLQuery(t *testing.T) {
|
|
m, err := objx.FromURLQuery("name=tyler&state=UT")
|
|
|
|
assert.NoError(t, err)
|
|
require.NotNil(t, m)
|
|
assert.Equal(t, "tyler", m.Get("name").Str())
|
|
assert.Equal(t, "UT", m.Get("state").Str())
|
|
}
|
|
|
|
func TestMapMustFromURLQuery(t *testing.T) {
|
|
m := objx.MustFromURLQuery("name=tyler&state=UT")
|
|
|
|
require.NotNil(t, m)
|
|
assert.Equal(t, "tyler", m.Get("name").Str())
|
|
assert.Equal(t, "UT", m.Get("state").Str())
|
|
}
|
|
|
|
func TestMapFromURLQueryWithError(t *testing.T) {
|
|
m, err := objx.FromURLQuery("%")
|
|
|
|
assert.Error(t, err)
|
|
assert.Nil(t, m)
|
|
assert.Panics(t, func() {
|
|
objx.MustFromURLQuery("%")
|
|
})
|
|
}
|