mirror of
https://github.com/absmach/magistrala.git
synced 2026-06-23 04:10:28 +00:00
7f03134d8e
Property Based Tests / api-test (push) Has been cancelled
Continuous Delivery / lint-and-build (push) Has been cancelled
Deploy GitHub Pages / swagger-ui (push) Has been cancelled
CI Pipeline / Lint Proto (push) Has been cancelled
CI Pipeline / Detect Changes (push) Has been cancelled
Continuous Delivery / Build and Push Docker Images (push) Has been cancelled
CI Pipeline / lint-and-build (push) Has been cancelled
CI Pipeline / Test ${{ matrix.module }} (push) Has been cancelled
CI Pipeline / Upload Coverage (push) Has been cancelled
Signed-off-by: nyagamunene <stevenyaga2014@gmail.com> Signed-off-by: JeffMboya <jangina.mboya@gmail.com> Co-authored-by: JeffMboya <jangina.mboya@gmail.com>
339 lines
7.2 KiB
Go
339 lines
7.2 KiB
Go
// Copyright (c) Abstract Machines
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package auth_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/absmach/magistrala/auth"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestEntityTypeString(t *testing.T) {
|
|
cases := []struct {
|
|
desc string
|
|
et auth.EntityType
|
|
expected string
|
|
}{
|
|
{
|
|
desc: "Groups entity type",
|
|
et: auth.GroupsType,
|
|
expected: "groups",
|
|
},
|
|
{
|
|
desc: "Channels entity type",
|
|
et: auth.ChannelsType,
|
|
expected: "channels",
|
|
},
|
|
{
|
|
desc: "Clients entity type",
|
|
et: auth.ClientsType,
|
|
expected: "clients",
|
|
},
|
|
{
|
|
desc: "Bootstrap entity type",
|
|
et: auth.BootstrapType,
|
|
expected: "bootstrap",
|
|
},
|
|
{
|
|
desc: "Dashboard entity type",
|
|
et: auth.DashboardType,
|
|
expected: "dashboards",
|
|
},
|
|
{
|
|
desc: "Messages entity type",
|
|
et: auth.MessagesType,
|
|
expected: "messages",
|
|
},
|
|
{
|
|
desc: "Rules entity type",
|
|
et: auth.RulesType,
|
|
expected: "rules",
|
|
},
|
|
{
|
|
desc: "Reports entity type",
|
|
et: auth.ReportsType,
|
|
expected: "reports",
|
|
},
|
|
{
|
|
desc: "Unknown entity type",
|
|
et: auth.EntityType(100),
|
|
expected: "unknown domain entity type 100",
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
t.Run(tc.desc, func(t *testing.T) {
|
|
got := tc.et.String()
|
|
assert.Equal(t, tc.expected, got, "String() = %v, expected %v", got, tc.expected)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestParseEntityType(t *testing.T) {
|
|
cases := []struct {
|
|
desc string
|
|
et string
|
|
expected auth.EntityType
|
|
err bool
|
|
}{
|
|
{
|
|
desc: "Parse groups",
|
|
et: "groups",
|
|
expected: auth.GroupsType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Parse channels",
|
|
et: "channels",
|
|
expected: auth.ChannelsType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Parse clients",
|
|
et: "clients",
|
|
expected: auth.ClientsType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Parse bootstrap",
|
|
et: "bootstrap",
|
|
expected: auth.BootstrapType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Parse dashboards",
|
|
et: "dashboards",
|
|
expected: auth.DashboardType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Parse rules",
|
|
et: "rules",
|
|
expected: auth.RulesType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Parse reports",
|
|
et: "reports",
|
|
expected: auth.ReportsType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Parse unknown entity type",
|
|
et: "unknown",
|
|
expected: auth.EntityType(0),
|
|
err: true,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
t.Run(tc.desc, func(t *testing.T) {
|
|
got, err := auth.ParseEntityType(tc.et)
|
|
if tc.err {
|
|
assert.Error(t, err, "ParseEntityType() should return error")
|
|
} else {
|
|
assert.NoError(t, err, "ParseEntityType() should not return error")
|
|
assert.Equal(t, tc.expected, got, "ParseEntityType() = %v, expected %v", got, tc.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestEntityTypeMarshalJSON(t *testing.T) {
|
|
cases := []struct {
|
|
desc string
|
|
et auth.EntityType
|
|
expected []byte
|
|
err error
|
|
}{
|
|
{
|
|
desc: "Marshal groups",
|
|
et: auth.GroupsType,
|
|
expected: []byte(`"groups"`),
|
|
err: nil,
|
|
},
|
|
{
|
|
desc: "Marshal channels",
|
|
et: auth.ChannelsType,
|
|
expected: []byte(`"channels"`),
|
|
err: nil,
|
|
},
|
|
{
|
|
desc: "Marshal clients",
|
|
et: auth.ClientsType,
|
|
expected: []byte(`"clients"`),
|
|
err: nil,
|
|
},
|
|
{
|
|
desc: "Marshal bootstrap",
|
|
et: auth.BootstrapType,
|
|
expected: []byte(`"bootstrap"`),
|
|
err: nil,
|
|
},
|
|
{
|
|
desc: "Marshal rules",
|
|
et: auth.RulesType,
|
|
expected: []byte(`"rules"`),
|
|
err: nil,
|
|
},
|
|
{
|
|
desc: "Marshal reports",
|
|
et: auth.ReportsType,
|
|
expected: []byte(`"reports"`),
|
|
err: nil,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
t.Run(tc.desc, func(t *testing.T) {
|
|
got, err := tc.et.MarshalJSON()
|
|
assert.Equal(t, tc.err, err, "MarshalJSON() error = %v, expected %v", err, tc.err)
|
|
assert.Equal(t, tc.expected, got, "MarshalJSON() = %v, expected %v", got, tc.expected)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestEntityTypeUnmarshalJSON(t *testing.T) {
|
|
cases := []struct {
|
|
desc string
|
|
data []byte
|
|
expected auth.EntityType
|
|
err bool
|
|
}{
|
|
{
|
|
desc: "Unmarshal groups",
|
|
data: []byte(`"groups"`),
|
|
expected: auth.GroupsType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Unmarshal channels",
|
|
data: []byte(`"channels"`),
|
|
expected: auth.ChannelsType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Unmarshal bootstrap",
|
|
data: []byte(`"bootstrap"`),
|
|
expected: auth.BootstrapType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Unmarshal rules",
|
|
data: []byte(`"rules"`),
|
|
expected: auth.RulesType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Unmarshal reports",
|
|
data: []byte(`"reports"`),
|
|
expected: auth.ReportsType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Unmarshal unknown",
|
|
data: []byte(`"unknown"`),
|
|
expected: auth.EntityType(0),
|
|
err: true,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
t.Run(tc.desc, func(t *testing.T) {
|
|
var et auth.EntityType
|
|
err := et.UnmarshalJSON(tc.data)
|
|
if tc.err {
|
|
assert.Error(t, err, "UnmarshalJSON() should return error")
|
|
} else {
|
|
assert.NoError(t, err, "UnmarshalJSON() should not return error")
|
|
assert.Equal(t, tc.expected, et, "UnmarshalJSON() = %v, expected %v", et, tc.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestEntityTypeMarshalText(t *testing.T) {
|
|
cases := []struct {
|
|
desc string
|
|
et auth.EntityType
|
|
expected []byte
|
|
err error
|
|
}{
|
|
{
|
|
desc: "Marshal groups as text",
|
|
et: auth.GroupsType,
|
|
expected: []byte("groups"),
|
|
err: nil,
|
|
},
|
|
{
|
|
desc: "Marshal channels as text",
|
|
et: auth.ChannelsType,
|
|
expected: []byte("channels"),
|
|
err: nil,
|
|
},
|
|
{
|
|
desc: "Marshal bootstrap as text",
|
|
et: auth.BootstrapType,
|
|
expected: []byte("bootstrap"),
|
|
err: nil,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
t.Run(tc.desc, func(t *testing.T) {
|
|
got, err := tc.et.MarshalText()
|
|
assert.Equal(t, tc.err, err, "MarshalText() error = %v, expected %v", err, tc.err)
|
|
assert.Equal(t, tc.expected, got, "MarshalText() = %v, expected %v", got, tc.expected)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestEntityTypeUnmarshalText(t *testing.T) {
|
|
cases := []struct {
|
|
desc string
|
|
data []byte
|
|
expected auth.EntityType
|
|
err bool
|
|
}{
|
|
{
|
|
desc: "Unmarshal groups from text",
|
|
data: []byte("groups"),
|
|
expected: auth.GroupsType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Unmarshal channels from text",
|
|
data: []byte("channels"),
|
|
expected: auth.ChannelsType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Unmarshal bootstrap from text",
|
|
data: []byte("bootstrap"),
|
|
expected: auth.BootstrapType,
|
|
err: false,
|
|
},
|
|
{
|
|
desc: "Unmarshal unknown from text",
|
|
data: []byte("unknown"),
|
|
expected: auth.EntityType(0),
|
|
err: true,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
t.Run(tc.desc, func(t *testing.T) {
|
|
var et auth.EntityType
|
|
err := et.UnmarshalText(tc.data)
|
|
if tc.err {
|
|
assert.Error(t, err, "UnmarshalText() should return error")
|
|
} else {
|
|
assert.NoError(t, err, "UnmarshalText() should not return error")
|
|
assert.Equal(t, tc.expected, et, "UnmarshalText() = %v, expected %v", et, tc.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|