Spaces:
Running
Running
// _ _ | |
// __ _____ __ ___ ___ __ _| |_ ___ | |
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
// \ V V / __/ (_| |\ V /| | (_| | || __/ | |
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
// | |
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
// | |
// CONTACT: [email protected] | |
// | |
package objects | |
import ( | |
"context" | |
"testing" | |
"github.com/go-openapi/strfmt" | |
"github.com/pkg/errors" | |
"github.com/weaviate/weaviate/entities/schema" | |
) | |
func Test_HeadObject(t *testing.T) { | |
t.Parallel() | |
var ( | |
cls = "MyClass" | |
id = strfmt.UUID("5a1cd361-1e0d-42ae-bd52-ee09cb5f31cc") | |
m = newFakeGetManager(schema.Schema{}) | |
errAny = errors.New("any") | |
) | |
tests := []struct { | |
class string | |
mockedOk bool | |
mockedErr error | |
authErr error | |
lockErr error | |
wantOK bool | |
wantCode int | |
}{ | |
{ | |
mockedOk: true, | |
wantOK: true, | |
}, | |
{ | |
class: cls, | |
mockedOk: true, | |
wantOK: true, | |
}, | |
{ | |
class: cls, | |
mockedOk: false, | |
wantOK: false, | |
}, | |
{ | |
class: cls, | |
mockedOk: false, | |
mockedErr: errAny, | |
wantOK: false, | |
wantCode: StatusInternalServerError, | |
}, | |
{ | |
class: cls, | |
authErr: errAny, | |
wantOK: false, | |
wantCode: StatusForbidden, | |
}, | |
{ | |
class: cls, | |
lockErr: errAny, | |
wantOK: false, | |
wantCode: StatusInternalServerError, | |
}, | |
} | |
for i, tc := range tests { | |
m.authorizer.Err = tc.authErr | |
m.locks.Err = tc.lockErr | |
if tc.authErr == nil && tc.lockErr == nil { | |
m.repo.On("Exists", tc.class, id).Return(tc.mockedOk, tc.mockedErr).Once() | |
} | |
ok, err := m.Manager.HeadObject(context.Background(), nil, tc.class, id, nil, "") | |
code := 0 | |
if err != nil { | |
code = err.Code | |
} | |
if tc.wantOK != ok || tc.wantCode != code { | |
t.Errorf("case %d expected:(%v, %v) got:(%v, %v)", i+1, tc.wantOK, tc.wantCode, ok, code) | |
} | |
} | |
} | |