mirror of https://github.com/portainer/portainer
95 lines
2.0 KiB
Go
95 lines
2.0 KiB
Go
package ldap
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"net/url"
|
|
"testing"
|
|
|
|
portainer "github.com/portainer/portainer/api"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestCreateConnectionForURL(t *testing.T) {
|
|
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(http.StatusOK)
|
|
}))
|
|
defer srv.Close()
|
|
|
|
tlsSrv := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(http.StatusOK)
|
|
}))
|
|
defer tlsSrv.Close()
|
|
|
|
srvURL, err := url.Parse(tlsSrv.URL)
|
|
require.NoError(t, err)
|
|
|
|
// TCP
|
|
|
|
settings := &portainer.LDAPSettings{
|
|
URL: srvURL.Host,
|
|
}
|
|
|
|
conn, err := createConnectionForURL(settings.URL, settings)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, conn)
|
|
conn.Close()
|
|
|
|
// TLS
|
|
|
|
settings.TLSConfig = portainer.TLSConfiguration{
|
|
TLS: true,
|
|
TLSSkipVerify: true,
|
|
}
|
|
|
|
conn, err = createConnectionForURL(settings.URL, settings)
|
|
require.NoError(t, err)
|
|
require.NotNil(t, conn)
|
|
conn.Close()
|
|
|
|
// Invalid TLS
|
|
|
|
settings.TLSConfig = portainer.TLSConfiguration{
|
|
TLS: true,
|
|
TLSSkipVerify: true,
|
|
TLSCertPath: "/invalid/path/cert",
|
|
TLSKeyPath: "/invalid/path/key",
|
|
}
|
|
|
|
conn, err = createConnectionForURL(settings.URL, settings)
|
|
require.Error(t, err)
|
|
require.Nil(t, conn)
|
|
|
|
// StartTLS
|
|
|
|
settings.TLSConfig.TLS = false
|
|
settings.StartTLS = true
|
|
|
|
conn, err = createConnectionForURL(settings.URL, settings)
|
|
require.Error(t, err)
|
|
require.Nil(t, conn)
|
|
}
|
|
|
|
func TestFailures(t *testing.T) {
|
|
s := Service{}
|
|
|
|
err := s.AuthenticateUser("username", "password", &portainer.LDAPSettings{})
|
|
require.Error(t, err)
|
|
|
|
uGroups, err := s.GetUserGroups("username", &portainer.LDAPSettings{})
|
|
require.Error(t, err)
|
|
require.Empty(t, uGroups)
|
|
|
|
users, err := s.SearchUsers(&portainer.LDAPSettings{})
|
|
require.Error(t, err)
|
|
require.Empty(t, users)
|
|
|
|
groups, err := s.SearchGroups(&portainer.LDAPSettings{})
|
|
require.Error(t, err)
|
|
require.Empty(t, groups)
|
|
|
|
err = s.TestConnectivity(&portainer.LDAPSettings{})
|
|
require.Error(t, err)
|
|
}
|