github.com/tommi2day/gomodules@v1.13.2-0.20240423190010-b7d55d252a27/common/dockertest_helper_test.go (about)

     1  package common
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/ory/dockertest/v3"
     8  	"github.com/stretchr/testify/assert"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestGetDockerHelper(t *testing.T) {
    13  	var pool *dockertest.Pool
    14  	var err error
    15  	var container *dockertest.Resource
    16  	var server string
    17  	var port int
    18  	t.Run("Test GetDockerPool", func(t *testing.T) {
    19  		pool, err = GetDockerPool()
    20  		assert.NoErrorf(t, err, "GetDockerPool() should not return error")
    21  		require.NotNil(t, pool, "GetDockerPool() should not return nil")
    22  	})
    23  	t.Run("Test GetDockerContainer", func(t *testing.T) {
    24  		container, err = pool.Run("nginx", "latest", []string{})
    25  		assert.NoErrorf(t, err, "Container should start without error")
    26  		require.NotNil(t, container, "Container should not be nil")
    27  	})
    28  	t.Run("Test GetContainerHostAndPort", func(t *testing.T) {
    29  		server, port = GetContainerHostAndPort(container, "80/tcp")
    30  		t.Logf("server: %s, port: %d", server, port)
    31  		assert.Greaterf(t, port, 30000, "GetContainerHostAndPort() should return a port >30000")
    32  		assert.True(t, server == "localhost" || server == "docker", "GetContainerHostAndPort() should return localhost or docker as server")
    33  	})
    34  	t.Run("Test GetContainerHostAndPort other docker", func(t *testing.T) {
    35  		_ = os.Setenv("DOCKER_HOST", "tcp://web:2375")
    36  		server, port = GetContainerHostAndPort(container, "80/tcp")
    37  		t.Logf("server: %s, port: %d", server, port)
    38  		assert.Greaterf(t, port, 30000, "GetContainerHostAndPort() should return a port >30000")
    39  		assert.True(t, server == "web", "GetContainerHostAndPort() should return localhost or docker as server")
    40  	})
    41  	t.Run("Test Exec on Container", func(t *testing.T) {
    42  		var cmdout string
    43  		cmd := []string{"ls", "-ld", "/etc/nginx"}
    44  		cmdout, _, err = ExecDockerCmd(container, cmd)
    45  		t.Logf("cmdout: %s", cmdout)
    46  		assert.NoErrorf(t, err, "ExecDockerCmd() should not return error")
    47  		assert.Contains(t, cmdout, "/etc/nginx", "ExecDockerCmd() should return /etc/nginx")
    48  	})
    49  	t.Run("Test DestroyDockerContainer", func(t *testing.T) {
    50  		DestroyDockerContainer(container)
    51  		_, ok := pool.ContainerByName(container.Container.Name)
    52  		assert.False(t, ok, "Container should not be found in pool after DestroyDockerContainer()")
    53  	})
    54  }