forked from TrueCloudLab/frostfs-s3-gw
[#387] middleware: Extend test coverage
Signed-off-by: Roman Loginov <r.loginov@yadro.com>
This commit is contained in:
parent
8a758293b9
commit
f4d174e740
5 changed files with 866 additions and 0 deletions
179
api/middleware/util_test.go
Normal file
179
api/middleware/util_test.go
Normal file
|
@ -0,0 +1,179 @@
|
|||
package middleware
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/creds/accessbox"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestGetBoxData(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
value any
|
||||
error string
|
||||
}{
|
||||
{
|
||||
name: "valid",
|
||||
value: &Box{
|
||||
AccessBox: &accessbox.Box{},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "invalid data",
|
||||
value: "invalid-data",
|
||||
error: "couldn't get box from context",
|
||||
},
|
||||
{
|
||||
name: "box does not exist",
|
||||
error: "couldn't get box from context",
|
||||
},
|
||||
{
|
||||
name: "access box is nil",
|
||||
value: &Box{},
|
||||
error: "couldn't get box data from context",
|
||||
},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
ctx := context.WithValue(context.Background(), boxKey, tc.value)
|
||||
actual, err := GetBoxData(ctx)
|
||||
if tc.error != "" {
|
||||
require.Contains(t, err.Error(), tc.error)
|
||||
return
|
||||
}
|
||||
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, actual)
|
||||
require.NotNil(t, actual.Gate)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetAuthHeaders(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
value any
|
||||
error bool
|
||||
}{
|
||||
{
|
||||
name: "valid",
|
||||
value: &Box{
|
||||
AuthHeaders: &AuthHeader{
|
||||
AccessKeyID: "valid-key",
|
||||
Region: "valid-region",
|
||||
SignatureV4: "valid-sign",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "invalid data",
|
||||
value: "invalid-data",
|
||||
error: true,
|
||||
},
|
||||
{
|
||||
name: "box does not exist",
|
||||
error: true,
|
||||
},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
ctx := context.WithValue(context.Background(), boxKey, tc.value)
|
||||
actual, err := GetAuthHeaders(ctx)
|
||||
if tc.error {
|
||||
require.Contains(t, err.Error(), "couldn't get box from context")
|
||||
return
|
||||
}
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, tc.value.(*Box).AuthHeaders.AccessKeyID, actual.AccessKeyID)
|
||||
require.Equal(t, tc.value.(*Box).AuthHeaders.Region, actual.Region)
|
||||
require.Equal(t, tc.value.(*Box).AuthHeaders.SignatureV4, actual.SignatureV4)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetClientTime(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
value any
|
||||
error string
|
||||
}{
|
||||
{
|
||||
name: "valid",
|
||||
value: &Box{
|
||||
ClientTime: time.Now(),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "invalid data",
|
||||
value: "invalid-data",
|
||||
error: "couldn't get box from context",
|
||||
},
|
||||
{
|
||||
name: "box does not exist",
|
||||
error: "couldn't get box from context",
|
||||
},
|
||||
{
|
||||
name: "zero time",
|
||||
value: &Box{
|
||||
ClientTime: time.Time{},
|
||||
},
|
||||
error: "couldn't get client time from context",
|
||||
},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
ctx := context.WithValue(context.Background(), boxKey, tc.value)
|
||||
actual, err := GetClientTime(ctx)
|
||||
if tc.error != "" {
|
||||
require.Contains(t, err.Error(), tc.error)
|
||||
return
|
||||
}
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, tc.value.(*Box).ClientTime, actual)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetAccessBoxAttrs(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
name string
|
||||
value any
|
||||
error bool
|
||||
}{
|
||||
{
|
||||
name: "valid",
|
||||
value: func() *Box {
|
||||
var attr object.Attribute
|
||||
attr.SetKey("key")
|
||||
attr.SetValue("value")
|
||||
return &Box{Attributes: []object.Attribute{attr}}
|
||||
}(),
|
||||
},
|
||||
{
|
||||
name: "invalid data",
|
||||
value: "invalid-data",
|
||||
error: true,
|
||||
},
|
||||
{
|
||||
name: "box does not exist",
|
||||
error: true,
|
||||
},
|
||||
} {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
ctx := context.WithValue(context.Background(), boxKey, tc.value)
|
||||
actual, err := GetAccessBoxAttrs(ctx)
|
||||
if tc.error {
|
||||
require.Contains(t, err.Error(), "couldn't get box from context")
|
||||
return
|
||||
}
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, len(tc.value.(*Box).Attributes), len(actual))
|
||||
require.Equal(t, tc.value.(*Box).Attributes[0].Key(), actual[0].Key())
|
||||
require.Equal(t, tc.value.(*Box).Attributes[0].Value(), actual[0].Value())
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue