104 lines
2.3 KiB
Go
104 lines
2.3 KiB
Go
package authorizer_test
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/golang/mock/gomock"
|
|
"github.com/influxdata/influxdb/v2"
|
|
"github.com/influxdata/influxdb/v2/authorizer"
|
|
influxdbcontext "github.com/influxdata/influxdb/v2/context"
|
|
"github.com/influxdata/influxdb/v2/kit/platform/errors"
|
|
"github.com/influxdata/influxdb/v2/mock"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func Test_BackupSqlStore(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
permList []influxdb.Permission
|
|
wantErr error
|
|
}{
|
|
{
|
|
"authorized to do the backup",
|
|
influxdb.OperPermissions(),
|
|
nil,
|
|
},
|
|
{
|
|
"not authorized to do the backup",
|
|
influxdb.ReadAllPermissions(),
|
|
&errors.Error{
|
|
Msg: "write:authorizations is unauthorized",
|
|
Code: errors.EUnauthorized,
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
ctrlr := gomock.NewController(t)
|
|
svc := mock.NewMockSqlBackupRestoreService(ctrlr)
|
|
s := authorizer.NewSqlBackupRestoreService(svc)
|
|
|
|
w := bytes.NewBuffer([]byte{})
|
|
|
|
if tt.wantErr == nil {
|
|
svc.EXPECT().
|
|
BackupSqlStore(gomock.Any(), w).
|
|
Return(nil)
|
|
}
|
|
|
|
ctx := influxdbcontext.SetAuthorizer(context.Background(), mock.NewMockAuthorizer(false, tt.permList))
|
|
err := s.BackupSqlStore(ctx, w)
|
|
require.Equal(t, tt.wantErr, err)
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_RestoreSqlStore(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
permList []influxdb.Permission
|
|
wantErr error
|
|
}{
|
|
{
|
|
"authorized to do the restore",
|
|
influxdb.OperPermissions(),
|
|
nil,
|
|
},
|
|
{
|
|
"not authorized to do the restore",
|
|
influxdb.ReadAllPermissions(),
|
|
&errors.Error{
|
|
Msg: "write:authorizations is unauthorized",
|
|
Code: errors.EUnauthorized,
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
ctrlr := gomock.NewController(t)
|
|
svc := mock.NewMockSqlBackupRestoreService(ctrlr)
|
|
s := authorizer.NewSqlBackupRestoreService(svc)
|
|
|
|
w := bytes.NewBuffer([]byte{})
|
|
|
|
if tt.wantErr == nil {
|
|
svc.EXPECT().
|
|
RestoreSqlStore(gomock.Any(), w).
|
|
Return(nil)
|
|
}
|
|
|
|
ctx := influxdbcontext.SetAuthorizer(context.Background(), mock.NewMockAuthorizer(false, tt.permList))
|
|
err := s.RestoreSqlStore(ctx, w)
|
|
require.Equal(t, tt.wantErr, err)
|
|
})
|
|
}
|
|
}
|