fix(platform_test): refactor platform tests to support uint64 platform.IDs
Co-Authored-By: Lorenzo Fontana <lo@linux.com> Signed-off-by: Leonardo Di Donato <leodidonato@gmail.com>pull/10616/head
parent
ef7007f40c
commit
d95c750fed
|
@ -1,10 +1,12 @@
|
|||
package platform
|
||||
package platform_test
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/influxdata/platform"
|
||||
)
|
||||
|
||||
const EFailedToGetStorageHost = "failed to get the storage host"
|
||||
|
@ -17,21 +19,21 @@ func TestErrorMsg(t *testing.T) {
|
|||
}{
|
||||
{
|
||||
name: "simple error",
|
||||
err: &Error{Code: ENotFound},
|
||||
err: &platform.Error{Code: platform.ENotFound},
|
||||
msg: "<not found>",
|
||||
},
|
||||
{
|
||||
name: "with op",
|
||||
err: &Error{
|
||||
Code: ENotFound,
|
||||
err: &platform.Error{
|
||||
Code: platform.ENotFound,
|
||||
Op: "bolt.FindAuthorizationByID",
|
||||
},
|
||||
msg: "bolt.FindAuthorizationByID: <not found>",
|
||||
},
|
||||
{
|
||||
name: "with op and value",
|
||||
err: &Error{
|
||||
Code: ENotFound,
|
||||
err: &platform.Error{
|
||||
Code: platform.ENotFound,
|
||||
Op: "bolt.FindAuthorizationByID",
|
||||
Msg: fmt.Sprintf("with ID %d", 323),
|
||||
},
|
||||
|
@ -39,7 +41,7 @@ func TestErrorMsg(t *testing.T) {
|
|||
},
|
||||
{
|
||||
name: "with a third party error",
|
||||
err: &Error{
|
||||
err: &platform.Error{
|
||||
Code: EFailedToGetStorageHost,
|
||||
Op: "cmd/fluxd.injectDeps",
|
||||
Err: errors.New("empty value"),
|
||||
|
@ -48,10 +50,10 @@ func TestErrorMsg(t *testing.T) {
|
|||
},
|
||||
{
|
||||
name: "with a internal error",
|
||||
err: &Error{
|
||||
err: &platform.Error{
|
||||
Code: EFailedToGetStorageHost,
|
||||
Op: "cmd/fluxd.injectDeps",
|
||||
Err: &Error{Code: EEmptyValue, Op: "cmd/fluxd.getStrList"},
|
||||
Err: &platform.Error{Code: platform.EEmptyValue, Op: "cmd/fluxd.getStrList"},
|
||||
},
|
||||
msg: "cmd/fluxd.injectDeps: cmd/fluxd.getStrList: <empty value>",
|
||||
},
|
||||
|
@ -74,12 +76,12 @@ func TestErrorMessage(t *testing.T) {
|
|||
},
|
||||
{
|
||||
name: "simple error",
|
||||
err: &Error{Msg: "simple error"},
|
||||
err: &platform.Error{Msg: "simple error"},
|
||||
want: "simple error",
|
||||
},
|
||||
{
|
||||
name: "embeded error",
|
||||
err: &Error{Err: &Error{Msg: "embeded error"}},
|
||||
err: &platform.Error{Err: &platform.Error{Msg: "embeded error"}},
|
||||
want: "embeded error",
|
||||
},
|
||||
{
|
||||
|
@ -89,7 +91,7 @@ func TestErrorMessage(t *testing.T) {
|
|||
},
|
||||
}
|
||||
for _, c := range cases {
|
||||
if result := ErrorMessage(c.err); c.want != result {
|
||||
if result := platform.ErrorMessage(c.err); c.want != result {
|
||||
t.Fatalf("%s failed, want %s, got %s", c.name, c.want, result)
|
||||
}
|
||||
}
|
||||
|
@ -105,22 +107,22 @@ func TestErrorCode(t *testing.T) {
|
|||
},
|
||||
{
|
||||
name: "simple error",
|
||||
err: &Error{Code: ENotFound},
|
||||
want: ENotFound,
|
||||
err: &platform.Error{Code: platform.ENotFound},
|
||||
want: platform.ENotFound,
|
||||
},
|
||||
{
|
||||
name: "embeded error",
|
||||
err: &Error{Code: ENotFound, Err: &Error{Code: EInvalid}},
|
||||
want: ENotFound,
|
||||
err: &platform.Error{Code: platform.ENotFound, Err: &platform.Error{Code: platform.EInvalid}},
|
||||
want: platform.ENotFound,
|
||||
},
|
||||
{
|
||||
name: "default error",
|
||||
err: errors.New("s"),
|
||||
want: EInternal,
|
||||
want: platform.EInternal,
|
||||
},
|
||||
}
|
||||
for _, c := range cases {
|
||||
if result := ErrorCode(c.err); c.want != result {
|
||||
if result := platform.ErrorCode(c.err); c.want != result {
|
||||
t.Fatalf("%s failed, want %s, got %s", c.name, c.want, result)
|
||||
}
|
||||
}
|
||||
|
@ -129,31 +131,31 @@ func TestErrorCode(t *testing.T) {
|
|||
func TestJSON(t *testing.T) {
|
||||
cases := []struct {
|
||||
name string
|
||||
err *Error
|
||||
err *platform.Error
|
||||
json string
|
||||
}{
|
||||
{
|
||||
name: "simple error",
|
||||
err: &Error{Code: ENotFound},
|
||||
err: &platform.Error{Code: platform.ENotFound},
|
||||
},
|
||||
{
|
||||
name: "with op",
|
||||
err: &Error{
|
||||
Code: ENotFound,
|
||||
err: &platform.Error{
|
||||
Code: platform.ENotFound,
|
||||
Op: "bolt.FindAuthorizationByID",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "with op and value",
|
||||
err: &Error{
|
||||
Code: ENotFound,
|
||||
err: &platform.Error{
|
||||
Code: platform.ENotFound,
|
||||
Op: "bolt.FindAuthorizationByID",
|
||||
Msg: fmt.Sprintf("with ID %d", 323),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "with a third party error",
|
||||
err: &Error{
|
||||
err: &platform.Error{
|
||||
Code: EFailedToGetStorageHost,
|
||||
Op: "cmd/fluxd.injectDeps",
|
||||
Err: errors.New("empty value"),
|
||||
|
@ -161,10 +163,10 @@ func TestJSON(t *testing.T) {
|
|||
},
|
||||
{
|
||||
name: "with a internal error",
|
||||
err: &Error{
|
||||
err: &platform.Error{
|
||||
Code: EFailedToGetStorageHost,
|
||||
Op: "cmd/fluxd.injectDeps",
|
||||
Err: &Error{Code: EEmptyValue, Op: "cmd/fluxd.getStrList"},
|
||||
Err: &platform.Error{Code: platform.EEmptyValue, Op: "cmd/fluxd.getStrList"},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -175,7 +177,7 @@ func TestJSON(t *testing.T) {
|
|||
t.Fatalf("%s encode failed, want err: %v, should be nil", c.name, err)
|
||||
}
|
||||
// decode testing
|
||||
got := new(Error)
|
||||
got := new(platform.Error)
|
||||
err = json.Unmarshal([]byte(result), got)
|
||||
if err != nil {
|
||||
t.Fatalf("%s decode failed, want err: %v, should be nil", c.name, err)
|
||||
|
@ -184,7 +186,7 @@ func TestJSON(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func decodeEqual(t *testing.T, want, result *Error, caseName string) {
|
||||
func decodeEqual(t *testing.T, want, result *platform.Error, caseName string) {
|
||||
if want.Code != result.Code {
|
||||
t.Fatalf("%s code failed, want %s, got %s", caseName, want.Code, result.Code)
|
||||
}
|
||||
|
@ -195,8 +197,8 @@ func decodeEqual(t *testing.T, want, result *Error, caseName string) {
|
|||
t.Fatalf("%s msg failed, want %s, got %s", caseName, want.Msg, result.Msg)
|
||||
}
|
||||
if want.Err != nil {
|
||||
if _, ok := want.Err.(*Error); ok {
|
||||
decodeEqual(t, want.Err.(*Error), result.Err.(*Error), caseName)
|
||||
if _, ok := want.Err.(*platform.Error); ok {
|
||||
decodeEqual(t, want.Err.(*platform.Error), result.Err.(*platform.Error), caseName)
|
||||
} else {
|
||||
if want.Err.Error() != result.Err.Error() {
|
||||
t.Fatalf("%s Err failed, want %s, got %s", caseName, want.Err.Error(), result.Err.Error())
|
||||
|
|
|
@ -40,10 +40,10 @@ type UserResourceMapping struct {
|
|||
|
||||
// Validate reports any validation errors for the mapping.
|
||||
func (m UserResourceMapping) Validate() error {
|
||||
if len(m.ResourceID) == 0 {
|
||||
if !m.ResourceID.Valid() {
|
||||
return errors.New("resourceID is required")
|
||||
}
|
||||
if len(m.UserID) == 0 {
|
||||
if !m.UserID.Valid() {
|
||||
return errors.New("userID is required")
|
||||
}
|
||||
if m.UserType != Owner && m.UserType != Member {
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
package platform
|
||||
package platform_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/influxdata/platform"
|
||||
platformtesting "github.com/influxdata/platform/testing"
|
||||
)
|
||||
|
||||
func TestOwnerMappingValidate(t *testing.T) {
|
||||
|
@ -19,8 +22,8 @@ func TestOwnerMappingValidate(t *testing.T) {
|
|||
{
|
||||
name: "mapping requires a resourceid",
|
||||
fields: fields{
|
||||
UserID: []byte{0xde, 0xba, 0xc1, 0xe0, 0xde, 0xad, 0xbe, 0xef},
|
||||
UserType: Owner,
|
||||
UserID: platformtesting.MustIDFromString("debac1e0deadbeef"),
|
||||
UserType: platform.Owner,
|
||||
ResourceType: DashboardResourceType,
|
||||
},
|
||||
wantErr: true,
|
||||
|
@ -28,8 +31,8 @@ func TestOwnerMappingValidate(t *testing.T) {
|
|||
{
|
||||
name: "mapping requires a userid",
|
||||
fields: fields{
|
||||
ResourceID: []byte{0xde, 0xba, 0xc1, 0xe0, 0xde, 0xad, 0xbe, 0xef},
|
||||
UserType: Owner,
|
||||
ResourceID: platformtesting.MustIDFromString("020f755c3c082000"),
|
||||
UserType: platform.Owner,
|
||||
ResourceType: DashboardResourceType,
|
||||
},
|
||||
wantErr: true,
|
||||
|
@ -37,8 +40,8 @@ func TestOwnerMappingValidate(t *testing.T) {
|
|||
{
|
||||
name: "mapping requires a usertype",
|
||||
fields: fields{
|
||||
ResourceID: []byte{0xde, 0xba, 0xc1, 0xe0, 0xde, 0xad, 0xbe, 0xef},
|
||||
UserID: []byte{0xde, 0xba, 0xc1, 0xe0, 0xde, 0xad, 0xbe, 0xef},
|
||||
ResourceID: platformtesting.MustIDFromString("020f755c3c082000"),
|
||||
UserID: platformtesting.MustIDFromString("debac1e0deadbeef"),
|
||||
ResourceType: DashboardResourceType,
|
||||
},
|
||||
wantErr: true,
|
||||
|
@ -46,8 +49,8 @@ func TestOwnerMappingValidate(t *testing.T) {
|
|||
{
|
||||
name: "mapping requires a resourcetype",
|
||||
fields: fields{
|
||||
ResourceID: []byte{0xde, 0xba, 0xc1, 0xe0, 0xde, 0xad, 0xbe, 0xef},
|
||||
UserID: []byte{0xde, 0xba, 0xc1, 0xe0, 0xde, 0xad, 0xbe, 0xef},
|
||||
ResourceID: platformtesting.MustIDFromString("020f755c3c082000"),
|
||||
UserID: platformtesting.MustIDFromString("debac1e0deadbeef"),
|
||||
UserType: Owner,
|
||||
},
|
||||
wantErr: true,
|
||||
|
@ -55,8 +58,8 @@ func TestOwnerMappingValidate(t *testing.T) {
|
|||
{
|
||||
name: "the usertype provided must be valid",
|
||||
fields: fields{
|
||||
ResourceID: []byte{0xde, 0xba, 0xc1, 0xe0, 0xde, 0xad, 0xbe, 0xef},
|
||||
UserID: []byte{0xde, 0xba, 0xc1, 0xe0, 0xde, 0xad, 0xbe, 0xef},
|
||||
ResourceID: platformtesting.MustIDFromString("020f755c3c082000"),
|
||||
UserID: platformtesting.MustIDFromString("debac1e0deadbeef"),
|
||||
UserType: "foo",
|
||||
ResourceType: DashboardResourceType,
|
||||
},
|
||||
|
@ -65,8 +68,8 @@ func TestOwnerMappingValidate(t *testing.T) {
|
|||
{
|
||||
name: "the resourcetype provided must be valid",
|
||||
fields: fields{
|
||||
ResourceID: []byte{0xde, 0xba, 0xc1, 0xe0, 0xde, 0xad, 0xbe, 0xef},
|
||||
UserID: []byte{0xde, 0xba, 0xc1, 0xe0, 0xde, 0xad, 0xbe, 0xef},
|
||||
ResourceID: platformtesting.MustIDFromString("020f755c3c082000"),
|
||||
UserID: platformtesting.MustIDFromString("debac1e0deadbeef"),
|
||||
UserType: Owner,
|
||||
ResourceType: "foo",
|
||||
},
|
||||
|
@ -75,7 +78,7 @@ func TestOwnerMappingValidate(t *testing.T) {
|
|||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
m := UserResourceMapping{
|
||||
m := platform.UserResourceMapping{
|
||||
ResourceID: tt.fields.ResourceID,
|
||||
UserID: tt.fields.UserID,
|
||||
UserType: tt.fields.UserType,
|
||||
|
|
Loading…
Reference in New Issue