diff --git a/v2/glauth_test.go b/v2/glauth_test.go index 5703b01..e8d8e1b 100644 --- a/v2/glauth_test.go +++ b/v2/glauth_test.go @@ -1,6 +1,7 @@ package main import ( + "os" "os/exec" "strings" "testing" @@ -26,50 +27,61 @@ type testEnv struct { func TestIntegerStuff(t *testing.T) { - Convey("Testing sample-simple local file-based LDAP server", t, func() { - svc := startSvc(SD, "bin/glauth", "-c", "sample-simple.cfg") - batteryOfTests( - t, - svc, testEnv{ - checkanonymousrootDSE: true, - checkTOTP: true, - checkbindUPN: true, - expectedinfo: "supportedLDAPVersion: 3", - svcdn: "cn=serviceuser,ou=svcaccts,dc=glauth,dc=com", - svcdnnogroup: "cn=serviceuser,dc=glauth,dc=com", - otpdn: "cn=otpuser,ou=superheros,dc=glauth,dc=com", - expectedaccount: "dn: cn=hackers,ou=superheros,ou=users,dc=glauth,dc=com", - scopedaccount: "dn: cn=hackers,ou=superheros,dc=glauth,dc=com", - expectedfirstaccount: "dn: cn=hackers,ou=superheros,ou=users,dc=glauth,dc=com", - expectedgroup: "dn: ou=superheros,ou=users,dc=glauth,dc=com", - checkemployeetype: "cn=hackers", - }) - stopSvc(svc) - }) + Convey("Preflight: Testing pre-requisites", t, func() { + Convey("bin/glauth should exist", func() { + info, err := os.Stat("bin/glauth") + So(err, ShouldEqual, nil) + Convey("bin/glauth should be executable", func() { + mode := uint32(info.Mode()) + So(mode&0b001001001, ShouldNotEqual, 0) - matchingLibrary := doRunGetFirst(RD, "ls", "bin/sqlite.so") - if matchingLibrary == "bin/sqlite.so" { - Convey("Testing sample-database LDAP server", t, func() { - svc := startSvc(SD, "bin/glauth", "-c", "pkg/plugins/sample-database.cfg") - batteryOfTests( - t, - svc, testEnv{ - checkanonymousrootDSE: true, - checkTOTP: false, - checkbindUPN: true, - expectedinfo: "supportedLDAPVersion: 3", - svcdn: "cn=serviceuser,ou=svcaccts,dc=glauth,dc=com", - svcdnnogroup: "cn=serviceuser,dc=glauth,dc=com", - otpdn: "cn=otpuser,ou=superheros,dc=glauth,dc=com", - expectedaccount: "dn: cn=hackers,ou=superheros,ou=users,dc=glauth,dc=com", - scopedaccount: "dn: cn=hackers,ou=superheros,dc=glauth,dc=com", - expectedfirstaccount: "dn: cn=hackers,ou=superheros,ou=users,dc=glauth,dc=com", - expectedgroup: "dn: ou=superheros,ou=users,dc=glauth,dc=com", - checkemployeetype: "", + Convey("Testing sample-simple local file-based LDAP server", func() { + svc := startSvc(SD, "bin/glauth", "-c", "sample-simple.cfg") + batteryOfTests( + t, + svc, testEnv{ + checkanonymousrootDSE: true, + checkTOTP: true, + checkbindUPN: true, + expectedinfo: "supportedLDAPVersion: 3", + svcdn: "cn=serviceuser,ou=svcaccts,dc=glauth,dc=com", + svcdnnogroup: "cn=serviceuser,dc=glauth,dc=com", + otpdn: "cn=otpuser,ou=superheros,dc=glauth,dc=com", + expectedaccount: "dn: cn=hackers,ou=superheros,ou=users,dc=glauth,dc=com", + scopedaccount: "dn: cn=hackers,ou=superheros,dc=glauth,dc=com", + expectedfirstaccount: "dn: cn=hackers,ou=superheros,ou=users,dc=glauth,dc=com", + expectedgroup: "dn: ou=superheros,ou=users,dc=glauth,dc=com", + checkemployeetype: "cn=hackers", + }) + stopSvc(svc) }) - stopSvc(svc) + + matchingLibrary := doRunGetFirst(RD, "ls", "bin/sqlite.so") + if matchingLibrary == "bin/sqlite.so" { + Convey("Testing sample-database LDAP server", func() { + svc := startSvc(SD, "bin/glauth", "-c", "pkg/plugins/sample-database.cfg") + batteryOfTests( + t, + svc, testEnv{ + checkanonymousrootDSE: true, + checkTOTP: false, + checkbindUPN: true, + expectedinfo: "supportedLDAPVersion: 3", + svcdn: "cn=serviceuser,ou=svcaccts,dc=glauth,dc=com", + svcdnnogroup: "cn=serviceuser,dc=glauth,dc=com", + otpdn: "cn=otpuser,ou=superheros,dc=glauth,dc=com", + expectedaccount: "dn: cn=hackers,ou=superheros,ou=users,dc=glauth,dc=com", + scopedaccount: "dn: cn=hackers,ou=superheros,dc=glauth,dc=com", + expectedfirstaccount: "dn: cn=hackers,ou=superheros,ou=users,dc=glauth,dc=com", + expectedgroup: "dn: ou=superheros,ou=users,dc=glauth,dc=com", + checkemployeetype: "", + }) + stopSvc(svc) + }) + } + }) }) - } + }) matchingContainers := doRunGetFirst(RD, "sh", "-c", "docker ps | grep openldap-service | wc -l") if matchingContainers == "1" { diff --git a/v2/go.mod b/v2/go.mod index d294d48..83860d5 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -25,20 +25,27 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/boombuler/barcode v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-sql-driver/mysql v1.7.1 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/gopherjs/gopherjs v1.17.2 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/jtolds/gls v4.20.0+incompatible // indirect github.com/kr/text v0.1.0 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-sqlite3 v1.14.18 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/msteinert/pam v1.2.0 // indirect github.com/nmcclain/asn1-ber v0.0.0-20170104154839-2661553a0484 // indirect github.com/prometheus/common v0.44.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect github.com/rickb777/date v1.20.5 // indirect github.com/rickb777/plural v1.4.1 // indirect github.com/smarty/assertions v1.15.0 // indirect + golang.org/x/mod v0.12.0 // indirect golang.org/x/sys v0.13.0 // indirect + golang.org/x/tools v0.13.0 // indirect google.golang.org/protobuf v1.31.0 // indirect ) diff --git a/v2/go.sum b/v2/go.sum index 739906f..380f5e4 100644 --- a/v2/go.sum +++ b/v2/go.sum @@ -19,6 +19,10 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= @@ -39,13 +43,19 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.18 h1:JL0eqdCOq6DJVNPSvArO/bIV9/P7fbGrV00LZHc+5aI= +github.com/mattn/go-sqlite3 v1.14.18/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/msteinert/pam v1.2.0 h1:mYfjlvN2KYs2Pb9G6nb/1f/nPfAttT/Jee5Sq9r3bGE= +github.com/msteinert/pam v1.2.0/go.mod h1:d2n0DCUK8rGecChV3JzvmsDjOY4R7AYbsNxAT+ftQl0= github.com/nmcclain/asn1-ber v0.0.0-20170104154839-2661553a0484 h1:D9EvfGQvlkKaDr2CRKN++7HbSXbefUNDrPq60T+g24s= github.com/nmcclain/asn1-ber v0.0.0-20170104154839-2661553a0484/go.mod h1:O1EljZ+oHprtxDDPHiMWVo/5dBT6PlvWX5PSwj80aBA= github.com/nmcclain/ldap v0.0.0-20210720162743-7f8d1e44eeba h1:DO8NFYdcRv1dnyAINJIBm6Bw2XibtLvQniNFGzf2W8E= @@ -95,6 +105,8 @@ golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -124,6 +136,7 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200529172331-a64b76657301/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200731060945-b5fad4ed8dd6/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/v2/pkg/plugins/glauth-mysql b/v2/pkg/plugins/glauth-mysql new file mode 160000 index 0000000..8379828 --- /dev/null +++ b/v2/pkg/plugins/glauth-mysql @@ -0,0 +1 @@ +Subproject commit 8379828f13fb0b31a41f3e5f6bf5bc6a3c8d6e1a diff --git a/v2/pkg/plugins/glauth-pam b/v2/pkg/plugins/glauth-pam new file mode 160000 index 0000000..0e6e424 --- /dev/null +++ b/v2/pkg/plugins/glauth-pam @@ -0,0 +1 @@ +Subproject commit 0e6e4240ef72ffc6d09b3aba9aa130b70ae13d92 diff --git a/v2/pkg/plugins/glauth-postgres b/v2/pkg/plugins/glauth-postgres new file mode 160000 index 0000000..61fa8ee --- /dev/null +++ b/v2/pkg/plugins/glauth-postgres @@ -0,0 +1 @@ +Subproject commit 61fa8ee872e932052fbdb0d7b5dd22e53310f8f3 diff --git a/v2/pkg/plugins/glauth-sqlite b/v2/pkg/plugins/glauth-sqlite new file mode 160000 index 0000000..e8b3b6a --- /dev/null +++ b/v2/pkg/plugins/glauth-sqlite @@ -0,0 +1 @@ +Subproject commit e8b3b6a8b0541d72dacfd4678273f7c86382ef00