storj/pkg/process/exec_test.go

91 lines
2.5 KiB
Go
Raw Normal View History

// Copyright (C) 2018 Storj Labs, Inc.
// See LICENSE for copying information.
package process_test
import (
"context"
"testing"
"github.com/spf13/cobra"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
"go.uber.org/zap"
monkit "gopkg.in/spacemonkeygo/monkit.v2"
"storj.io/storj/pkg/process"
)
type MockedService struct {
mock.Mock
}
func (m *MockedService) InstanceID() string {
return ""
}
func (m *MockedService) Process(ctx context.Context, cmd *cobra.Command, args []string) error {
arguments := m.Called(ctx, cmd, args)
return arguments.Error(0)
}
func (m *MockedService) SetLogger(*zap.Logger) error {
args := m.Called()
return args.Error(0)
}
func (m *MockedService) SetMetricHandler(*monkit.Registry) error {
args := m.Called()
return args.Error(0)
}
func TestMainSingleProcess(t *testing.T) {
mockService := new(MockedService)
mockService.On("SetLogger", mock.Anything).Return(nil)
mockService.On("SetMetricHandler", mock.Anything).Return(nil)
mockService.On("Process", mock.Anything, mock.Anything, mock.Anything).Return(nil)
assert.Nil(t, process.Main(func() error { return nil }, mockService))
mockService.AssertExpectations(t)
}
func TestMainMultipleProcess(t *testing.T) {
// TODO: Fix the async issues in this test
// mockService1 := MockedService{}
// mockService2 := MockedService{}
// mockService1.On("SetLogger", mock.Anything).Return(nil)
// mockService1.On("SetMetricHandler", mock.Anything).Return(nil)
// mockService1.On("Process", mock.Anything, mock.Anything, mock.Anything).Return(nil)
// mockService2.On("SetLogger", mock.Anything).Return(nil)
// mockService2.On("SetMetricHandler", mock.Anything).Return(nil)
// mockService2.On("Process", mock.Anything, mock.Anything, mock.Anything).Return(nil)
// assert.Nil(t, process.Main(func() error { return nil }, &mockService1, &mockService2))
// mockService1.AssertExpectations(t)
// mockService2.AssertExpectations(t)
t.Skip()
}
func TestMainProcessError(t *testing.T) {
mockService := MockedService{}
err := process.ErrLogger.New("Process Error")
mockService.On("SetLogger", mock.Anything).Return(nil)
mockService.On("SetMetricHandler", mock.Anything).Return(nil)
mockService.On("Process", mock.Anything, mock.Anything, mock.Anything).Return(err)
assert.Equal(t, err, process.Main(func() error { return nil }, &mockService))
mockService.AssertExpectations(t)
}
func TestConfigEnvironment(t *testing.T) {
t.Skip()
}
func TestMust(t *testing.T) {
t.Skip()
}
func TestExecute(t *testing.T) {
t.Skip()
}