blob: 9a0dad1749f540f0207fe616f1e9254c547483e5 [file] [log] [blame]
/*
* Portions copyright 2019-present Open Networking Foundation
* Original copyright 2019-present Ciena Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package commands
import (
"context"
corderrors "github.com/opencord/cordctl/error"
"github.com/stretchr/testify/assert"
"testing"
)
func TestDecodeOperator(t *testing.T) {
value, operator, invert, err := DecodeOperator("=something")
assert.Equal(t, value, "something")
assert.Equal(t, operator, "EQUAL")
assert.Equal(t, invert, false)
assert.Equal(t, err, nil)
value, operator, invert, err = DecodeOperator("!=something")
assert.Equal(t, value, "something")
assert.Equal(t, operator, "EQUAL")
assert.Equal(t, invert, true)
assert.Equal(t, err, nil)
value, operator, invert, err = DecodeOperator(">3")
assert.Equal(t, value, "3")
assert.Equal(t, operator, "GREATER_THAN")
assert.Equal(t, invert, false)
assert.Equal(t, err, nil)
value, operator, invert, err = DecodeOperator(">=3")
assert.Equal(t, value, "3")
assert.Equal(t, operator, "GREATER_THAN_OR_EQUAL")
assert.Equal(t, invert, false)
assert.Equal(t, err, nil)
value, operator, invert, err = DecodeOperator("<3")
assert.Equal(t, value, "3")
assert.Equal(t, operator, "LESS_THAN")
assert.Equal(t, invert, false)
assert.Equal(t, err, nil)
value, operator, invert, err = DecodeOperator("<=3")
assert.Equal(t, value, "3")
assert.Equal(t, operator, "LESS_THAN_OR_EQUAL")
assert.Equal(t, invert, false)
assert.Equal(t, err, nil)
}
func TestCommaSeparatedQueryToMap(t *testing.T) {
m, err := CommaSeparatedQueryToMap("foo=7,bar!=stuff, x = 5, y= 27", true)
assert.Equal(t, err, nil)
assert.Equal(t, m["foo"], "=7")
assert.Equal(t, m["bar"], "!=stuff")
assert.Equal(t, m["x"], "= 5")
assert.Equal(t, m["y"], "= 27")
}
func TestCommaSeparatedQueryToMapIllegal(t *testing.T) {
// Query string missing operator
_, err := CommaSeparatedQueryToMap("foo", true)
_, matched := err.(*corderrors.IllegalQueryError)
assert.True(t, matched)
// Query string is contains an empty element
_, err = CommaSeparatedQueryToMap(",foo=bar", true)
_, matched = err.(*corderrors.IllegalQueryError)
assert.True(t, matched)
}
func TestCommaSeparatedQueryToMapEmpty(t *testing.T) {
// Query string missing operator
m, err := CommaSeparatedQueryToMap("", true)
assert.Equal(t, err, nil)
assert.Equal(t, len(m), 0)
}
func TestTypeConvert(t *testing.T) {
conn, descriptor, err := InitClient(INIT_DEFAULT)
assert.Equal(t, err, nil)
defer conn.Close()
v, err := TypeConvert(descriptor, "Site", "id", "7")
assert.Equal(t, err, nil)
assert.Equal(t, v, int32(7))
v, err = TypeConvert(descriptor, "Site", "name", "foo")
assert.Equal(t, err, nil)
assert.Equal(t, v, "foo")
v, err = TypeConvert(descriptor, "Site", "enacted", "123.4")
assert.Equal(t, err, nil)
assert.Equal(t, v, 123.4)
}
func TestCheckModelName(t *testing.T) {
conn, descriptor, err := InitClient(INIT_DEFAULT)
assert.Equal(t, err, nil)
defer conn.Close()
err = CheckModelName(descriptor, "Slice")
assert.Equal(t, err, nil)
err = CheckModelName(descriptor, "DoesNotExist")
_, matched := err.(*corderrors.UnknownModelTypeError)
assert.True(t, matched)
}
func TestCreateModel(t *testing.T) {
conn, descriptor, err := InitClient(INIT_DEFAULT)
assert.Equal(t, err, nil)
defer conn.Close()
m := make(map[string]interface{})
m["name"] = "mockslice3"
m["site_id"] = int32(1)
err = CreateModel(conn, descriptor, "Slice", m)
assert.Equal(t, err, nil)
assert.Equal(t, m["id"], int32(3))
}
func TestUpdateModel(t *testing.T) {
conn, descriptor, err := InitClient(INIT_DEFAULT)
assert.Equal(t, err, nil)
defer conn.Close()
m := make(map[string]interface{})
m["id"] = int32(1)
m["name"] = "mockslice1_newname"
err = UpdateModel(conn, descriptor, "Slice", m)
assert.Equal(t, err, nil)
}
func TestGetModel(t *testing.T) {
conn, descriptor, err := InitClient(INIT_DEFAULT)
assert.Equal(t, err, nil)
defer conn.Close()
m, err := GetModel(context.Background(), conn, descriptor, "Slice", int32(1))
assert.Equal(t, err, nil)
assert.Equal(t, m.GetFieldByName("id").(int32), int32(1))
assert.Equal(t, m.GetFieldByName("name").(string), "mockslice1")
}
func TestGetModelNoExist(t *testing.T) {
conn, descriptor, err := InitClient(INIT_DEFAULT)
assert.Equal(t, err, nil)
defer conn.Close()
_, err = GetModel(context.Background(), conn, descriptor, "Slice", int32(77))
assert.NotEqual(t, err, nil)
_, matched := err.(*corderrors.ModelNotFoundError)
assert.True(t, matched)
}
func TestListModels(t *testing.T) {
conn, descriptor, err := InitClient(INIT_DEFAULT)
assert.Equal(t, err, nil)
defer conn.Close()
m, err := ListModels(context.Background(), conn, descriptor, "Slice")
assert.Equal(t, err, nil)
assert.Equal(t, len(m), 2)
assert.Equal(t, m[0].GetFieldByName("id").(int32), int32(1))
assert.Equal(t, m[0].GetFieldByName("name").(string), "mockslice1")
assert.Equal(t, m[1].GetFieldByName("id").(int32), int32(2))
assert.Equal(t, m[1].GetFieldByName("name").(string), "mockslice2")
}
func TestFilterModels(t *testing.T) {
conn, descriptor, err := InitClient(INIT_DEFAULT)
assert.Equal(t, err, nil)
defer conn.Close()
qm := map[string]string{"id": "=1"}
m, err := FilterModels(context.Background(), conn, descriptor, "Slice", FILTER_DEFAULT, qm)
assert.Equal(t, err, nil)
assert.Equal(t, len(m), 1)
assert.Equal(t, m[0].GetFieldByName("id").(int32), int32(1))
assert.Equal(t, m[0].GetFieldByName("name").(string), "mockslice1")
}
func TestFindModel(t *testing.T) {
conn, descriptor, err := InitClient(INIT_DEFAULT)
assert.Equal(t, err, nil)
defer conn.Close()
qm := map[string]string{"id": "=1"}
m, err := FindModel(context.Background(), conn, descriptor, "Slice", qm)
assert.Equal(t, err, nil)
assert.Equal(t, m.GetFieldByName("id").(int32), int32(1))
assert.Equal(t, m.GetFieldByName("name").(string), "mockslice1")
}
func TestFindModelNoExist(t *testing.T) {
conn, descriptor, err := InitClient(INIT_DEFAULT)
assert.Equal(t, err, nil)
defer conn.Close()
qm := map[string]string{"id": "=77"}
_, err = FindModel(context.Background(), conn, descriptor, "Slice", qm)
assert.NotEqual(t, err, nil)
_, matched := err.(*corderrors.ModelNotFoundError)
assert.True(t, matched)
}
func TestDeleteModel(t *testing.T) {
conn, descriptor, err := InitClient(INIT_DEFAULT)
assert.Equal(t, err, nil)
defer conn.Close()
err = DeleteModel(conn, descriptor, "Slice", int32(1))
assert.Equal(t, err, nil)
}