17706: Merge branch 'master' into 17706-costanalyzer-uncommitted-container-requests
[arvados.git] / lib / controller / localdb / login_ldap_docker_test.go
index 54454a190f9c3947a11f9e45cedb53213a68933a..3cbf14fe0b0c11694bd95831179f3f0b7f6eb586 100644 (file)
@@ -2,45 +2,53 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-// Skip this slow test unless invoked as "go test -tags docker".
-// +build docker
-
 package localdb
 
 import (
        "os"
        "os/exec"
+       "testing"
 
-       "git.arvados.org/arvados.git/sdk/go/arvados"
-       "git.arvados.org/arvados.git/sdk/go/arvadostest"
        check "gopkg.in/check.v1"
 )
 
-var _ = check.Suite(&LDAPSuite{})
-
-type LDAPSuite struct{}
-
-func (s *LDAPSuite) TearDownSuite(c *check.C) {
-       // Undo any changes/additions to the user database so they
-       // don't affect subsequent tests.
-       arvadostest.ResetEnv()
-       c.Check(arvados.NewClientFromEnv().RequestAndDecode(nil, "POST", "database/reset", nil, nil), check.IsNil)
+func haveDocker() bool {
+       _, err := exec.Command("docker", "info").CombinedOutput()
+       return err == nil
 }
 
 func (s *LDAPSuite) TestLoginLDAPViaPAM(c *check.C) {
+       if testing.Short() {
+               c.Skip("skipping docker test in short mode")
+       }
+       if !haveDocker() {
+               c.Skip("skipping docker test because docker is not available")
+       }
+       pgproxy := newPgProxy(c, s.cluster)
+       defer pgproxy.Close()
+
        cmd := exec.Command("bash", "login_ldap_docker_test.sh")
        cmd.Stdout = os.Stderr
        cmd.Stderr = os.Stderr
-       cmd.Env = append(os.Environ(), "config_method=pam")
+       cmd.Env = append(os.Environ(), "config_method=pam", "pgport="+pgproxy.Port())
        err := cmd.Run()
        c.Check(err, check.IsNil)
 }
 
 func (s *LDAPSuite) TestLoginLDAPBuiltin(c *check.C) {
+       if testing.Short() {
+               c.Skip("skipping docker test in short mode")
+       }
+       if !haveDocker() {
+               c.Skip("skipping docker test because docker is not available")
+       }
+       pgproxy := newPgProxy(c, s.cluster)
+       defer pgproxy.Close()
+
        cmd := exec.Command("bash", "login_ldap_docker_test.sh")
        cmd.Stdout = os.Stderr
        cmd.Stderr = os.Stderr
-       cmd.Env = append(os.Environ(), "config_method=ldap")
+       cmd.Env = append(os.Environ(), "config_method=ldap", "pgport="+pgproxy.Port())
        err := cmd.Run()
        c.Check(err, check.IsNil)
 }