influxdb/authorizer/sql_backup_restore_test.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)
})
}
}