synapsecns/sanguine

View on GitHub
core/dockerutil/options_test.go

Summary

Maintainability
A
1 hr
Test Coverage
package dockerutil_test

import (
    "context"
    "errors"
    "github.com/ory/dockertest/v3/docker"
    "github.com/synapsecns/sanguine/core/dockerutil"
    "testing"

    "github.com/ory/dockertest/v3"
)

func TestValidateOptions(t *testing.T) {
    ctx := context.Background()
    resource := &dockertest.Resource{
        Container: &docker.Container{
            ID: "test-container-id",
        },
    }

    pool, err := dockertest.NewPool("")
    if err != nil {
        t.Fatalf("failed to create docker pool: %s", err)
    }

    tests := []struct {
        name    string
        options []dockerutil.Option
        err     error
    }{
        {
            name: "success",
            options: []dockerutil.Option{
                dockerutil.WithContext(ctx),
                dockerutil.WithResource(resource),
                dockerutil.WithPool(pool),
                dockerutil.WithStdout(true),
            },
            err: nil,
        },
        {
            name: "missing context",
            options: []dockerutil.Option{
                dockerutil.WithResource(resource),
                dockerutil.WithPool(pool),
                dockerutil.WithStdout(true),
            },
            err: dockerutil.NewOptionError(dockerutil.NewContextError("context is not provided")),
        },
        {
            name: "missing resource",
            options: []dockerutil.Option{
                dockerutil.WithContext(ctx),
                dockerutil.WithPool(pool),
                dockerutil.WithStdout(true),
            },
            err: dockerutil.NewOptionError(dockerutil.NewResourceError("resource is not provided")),
        },
        {
            name: "missing pool",
            options: []dockerutil.Option{
                dockerutil.WithContext(ctx),
                dockerutil.WithResource(resource),
                dockerutil.WithStdout(true),
            },
            err: dockerutil.NewOptionError(dockerutil.NewPoolError("pool is not provided")),
        },
        {
            name: "missing callback",
            options: []dockerutil.Option{
                dockerutil.WithContext(ctx),
                dockerutil.WithResource(resource),
                dockerutil.WithPool(pool),
                dockerutil.WithStdout(true),
                dockerutil.WithCallback(nil),
            },
            err: dockerutil.NewOptionError(dockerutil.NewCallbackError("callback is not provided")),
        },
    }

    for i := range tests {
        tt := tests[i]
        t.Run(tt.name, func(t *testing.T) {
            err := dockerutil.ValidateOptions(tt.options...)
            if !errors.Is(err, tt.err) {
                t.Errorf("expected error: %v, got: %v", tt.err, err)
            }
        })
    }
}