1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-29 13:49:28 +08:00
Mainflux.mainflux/manager/api/requests_test.go

198 lines
4.0 KiB
Go
Raw Normal View History

package api
import (
"fmt"
"testing"
"github.com/gocql/gocql"
"github.com/mainflux/mainflux/manager"
"github.com/stretchr/testify/assert"
)
func TestUserReqValidation(t *testing.T) {
cases := []struct {
user manager.User
err error
}{
{manager.User{"foo@example.com", "pass"}, nil},
{manager.User{"invalid", "pass"}, manager.ErrMalformedEntity},
{manager.User{"", "pass"}, manager.ErrMalformedEntity},
{manager.User{"foo@example.com", ""}, manager.ErrMalformedEntity},
}
for i, tc := range cases {
req := userReq{tc.user}
err := req.validate()
assert.Equal(t, tc.err, err, fmt.Sprintf("failed at %d\n", i))
}
}
func TestIdentityReqValidation(t *testing.T) {
cases := []struct {
key string
err error
}{
{"valid", nil},
{"", manager.ErrUnauthorizedAccess},
}
for i, tc := range cases {
req := identityReq{tc.key}
err := req.validate()
assert.Equal(t, tc.err, err, fmt.Sprintf("failed at %d\n", i))
}
}
func TestAddClientReqValidation(t *testing.T) {
key := "key"
vc := manager.Client{Type: "app"}
cases := []struct {
key string
client manager.Client
err error
}{
{key, vc, nil},
{"", vc, manager.ErrUnauthorizedAccess},
{key, manager.Client{Type: "invalid"}, manager.ErrMalformedEntity},
}
for i, tc := range cases {
req := addClientReq{
key: tc.key,
client: tc.client,
}
err := req.validate()
assert.Equal(t, tc.err, err, fmt.Sprintf("failed at %d\n", i))
}
}
func TestUpdateClientReqValidation(t *testing.T) {
key := "key"
uuid := gocql.TimeUUID().String()
vc := manager.Client{Type: "app"}
cases := []struct {
key string
id string
client manager.Client
err error
}{
{key, uuid, vc, nil},
{key, "non-uuid", vc, manager.ErrNotFound},
{"", uuid, vc, manager.ErrUnauthorizedAccess},
{key, uuid, manager.Client{Type: "invalid"}, manager.ErrMalformedEntity},
}
for i, tc := range cases {
req := updateClientReq{
key: tc.key,
id: tc.id,
client: tc.client,
}
err := req.validate()
assert.Equal(t, tc.err, err, fmt.Sprintf("failed at %d\n", i))
}
}
func TestCreateChannelReqValidation(t *testing.T) {
key := "key"
vc := manager.Channel{}
cases := []struct {
key string
channel manager.Channel
err error
}{
{key, vc, nil},
{"", vc, manager.ErrUnauthorizedAccess},
}
for i, tc := range cases {
req := createChannelReq{
key: tc.key,
channel: tc.channel,
}
err := req.validate()
assert.Equal(t, tc.err, err, fmt.Sprintf("failed at %d\n", i))
}
}
func TestUpdateChannelReqValidation(t *testing.T) {
key := "key"
uuid := gocql.TimeUUID().String()
vc := manager.Channel{}
cases := []struct {
key string
id string
channel manager.Channel
err error
}{
{key, uuid, vc, nil},
{key, "non-uuid", vc, manager.ErrNotFound},
{"", uuid, vc, manager.ErrUnauthorizedAccess},
}
for i, tc := range cases {
req := updateChannelReq{
key: tc.key,
id: tc.id,
channel: tc.channel,
}
err := req.validate()
assert.Equal(t, tc.err, err, fmt.Sprintf("failed at %d\n", i))
}
}
func TestViewResourceReqValidation(t *testing.T) {
key := "key"
uuid := gocql.TimeUUID().String()
cases := []struct {
key string
id string
err error
}{
{key, uuid, nil},
{"", uuid, manager.ErrUnauthorizedAccess},
{key, "non-uuid", manager.ErrNotFound},
}
for i, tc := range cases {
req := viewResourceReq{tc.key, tc.id}
err := req.validate()
assert.Equal(t, tc.err, err, fmt.Sprintf("failed at %d\n", i))
}
}
func TestListResourcesReqValidation(t *testing.T) {
cases := []struct {
key string
size int
offset int
err error
}{
{"key", 10, 10, nil},
{"", 10, 10, manager.ErrUnauthorizedAccess},
{"key", 10, -10, manager.ErrMalformedEntity},
{"key", 0, 10, manager.ErrMalformedEntity},
{"key", -10, 10, manager.ErrMalformedEntity},
}
for i, tc := range cases {
req := listResourcesReq{
key: tc.key,
size: tc.size,
offset: tc.offset,
}
err := req.validate()
assert.Equal(t, tc.err, err, fmt.Sprintf("failed at %d\n", i))
}
}