Ver código fonte

test for ccache

Jonathan Turner 8 anos atrás
pai
commit
fb30005f2a
2 arquivos alterados com 61 adições e 1 exclusões
  1. 2 1
      .travis.yml
  2. 59 0
      credentials/ccache_integration_test.go

+ 2 - 1
.travis.yml

@@ -15,6 +15,7 @@ services:
   - docker
 
 before_install:
+  - apt-get install -yq krb5-user
   - go get github.com/golang/lint/golint
   - docker pull jcmturner/gokrb5:http
   - docker pull jcmturner/gokrb5:dns
@@ -34,7 +35,7 @@ before_script:
   - sudo sed -i 's/nameserver .*/nameserver 127.0.0.1/g' /etc/resolv.conf
 
 env:
-  - TEST_KDC_ADDR=127.0.0.1 TEST_HTTP_URL="http://host.test.gokrb5/index.html" DNSUTILS_OVERRIDE_NS="127.0.0.1:53"
+  - TEST_KDC_ADDR=127.0.0.1 TEST_HTTP_URL="http://host.test.gokrb5/index.html" DNSUTILS_OVERRIDE_NS="127.0.0.1:53" DEBIAN_FRONTEND=noninteractive
 
 script:
   - test -z $(gofmt -s -d -l -e $GO_FILES | tee /dev/fd/2 | xargs | sed 's/\s//g') # Fail if a .go file hasn't been formatted with gofmt

+ 59 - 0
credentials/ccache_integration_test.go

@@ -0,0 +1,59 @@
+// +build integration
+// To turn on this test use -tags=integration in go test command
+
+package credentials
+
+import (
+	"fmt"
+	"io"
+	"os/exec"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+const (
+	kinitCmd = "kinit"
+	kvnoCmd  = "kvno"
+)
+
+func login() error {
+	cmd := exec.Command(kinitCmd, "testuser1@TEST.GOKRB5")
+	stdin, err := cmd.StdinPipe()
+	if err != nil {
+		return fmt.Errorf("could not open stdin to %s command: %v", kinitCmd, err)
+	}
+	err = cmd.Start()
+	if err != nil {
+		return fmt.Errorf("could not start %s command: %v", kinitCmd, err)
+	}
+	go func() {
+		defer stdin.Close()
+		io.WriteString(stdin, "passwordvalue")
+	}()
+	err = cmd.Wait()
+	if err != nil {
+		return fmt.Errorf("%s did not run successfully: %v", kinitCmd, err)
+	}
+	return nil
+}
+
+func getServiceTkt() error {
+	cmd := exec.Command(kvnoCmd, "HTTP/host.test.gokrb5")
+	err := cmd.Start()
+	if err != nil {
+		return fmt.Errorf("could not start %s command: %v", kvnoCmd, err)
+	}
+	err = cmd.Wait()
+	if err != nil {
+		return fmt.Errorf("%s did not run successfully: %v", kvnoCmd, err)
+	}
+	return nil
+}
+
+func TestLoadCCache(t *testing.T) {
+	usr, _ := user.Current()
+	cpath := "/tmp/krb5cc_" + usr.Uid
+	c, err := LoadCCache(cpath)
+	assert.Equal(t, "testuser1@TEST.GOKRB5", c.GetClientPrincipalName().GetPrincipalNameString(), "principal not as expected")
+}