96 lines
2.2 KiB
Go
96 lines
2.2 KiB
Go
package docker
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/golang/mock/gomock"
|
|
dockerMock "github.com/metrue/fx/container_runtimes/mocks"
|
|
"github.com/metrue/fx/types"
|
|
)
|
|
|
|
func TestDriverPing(t *testing.T) {
|
|
ctrl := gomock.NewController(t)
|
|
defer ctrl.Finish()
|
|
|
|
dockerClient := dockerMock.NewMockContainerRuntime(ctrl)
|
|
n := New(Options{
|
|
DockerClient: dockerClient,
|
|
})
|
|
ctx := context.Background()
|
|
dockerClient.EXPECT().Version(ctx).Return("", nil)
|
|
if err := n.Ping(ctx); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestDriverDeploy(t *testing.T) {
|
|
ctrl := gomock.NewController(t)
|
|
defer ctrl.Finish()
|
|
|
|
dockerClient := dockerMock.NewMockContainerRuntime(ctrl)
|
|
n := New(Options{
|
|
DockerClient: dockerClient,
|
|
})
|
|
ctx := context.Background()
|
|
fn := "fn"
|
|
name := "name"
|
|
image := "image"
|
|
ports := []types.PortBinding{}
|
|
dockerClient.EXPECT().StartContainer(ctx, name, image, ports).Return(nil)
|
|
if err := n.Deploy(ctx, fn, name, image, ports); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestDriverDestroy(t *testing.T) {
|
|
ctrl := gomock.NewController(t)
|
|
defer ctrl.Finish()
|
|
|
|
dockerClient := dockerMock.NewMockContainerRuntime(ctrl)
|
|
n := New(Options{
|
|
DockerClient: dockerClient,
|
|
})
|
|
ctx := context.Background()
|
|
name := "name"
|
|
dockerClient.EXPECT().StopContainer(ctx, name).Return(nil)
|
|
dockerClient.EXPECT().RemoveContainer(ctx, name).Return(nil)
|
|
if err := n.Destroy(ctx, name); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestDriverGetStatus(t *testing.T) {
|
|
ctrl := gomock.NewController(t)
|
|
defer ctrl.Finish()
|
|
|
|
dockerClient := dockerMock.NewMockContainerRuntime(ctrl)
|
|
n := New(Options{
|
|
DockerClient: dockerClient,
|
|
})
|
|
ctx := context.Background()
|
|
name := "name"
|
|
err := errors.New("no such container")
|
|
dockerClient.EXPECT().InspectContainer(ctx, name, gomock.Any()).Return(err)
|
|
if _, err := n.GetStatus(ctx, name); err == nil {
|
|
t.Fatalf("should get error")
|
|
}
|
|
}
|
|
|
|
func TestList(t *testing.T) {
|
|
ctrl := gomock.NewController(t)
|
|
defer ctrl.Finish()
|
|
|
|
dockerClient := dockerMock.NewMockContainerRuntime(ctrl)
|
|
n := New(Options{
|
|
DockerClient: dockerClient,
|
|
})
|
|
ctx := context.Background()
|
|
name := "name"
|
|
dockerClient.EXPECT().ListContainer(ctx, name).Return(nil, nil)
|
|
if _, err := n.List(ctx, name); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|