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 }