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
Leonardo Di Donato 2018-09-12 13:25:17 +02:00 committed by Chris Goller
parent ef7007f40c
commit d95c750fed
3 changed files with 52 additions and 47 deletions

View File

@ -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())

View File

@ -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 {

View File

@ -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,