Parcourir la source

test from ccache tgt

Jonathan Turner il y a 8 ans
Parent
commit
9fedbc9307
1 fichiers modifiés avec 40 ajouts et 0 suppressions
  1. 40 0
      credentials/ccache_integration_test.go

+ 40 - 0
credentials/ccache_integration_test.go

@@ -7,12 +7,15 @@ import (
 	"bytes"
 	"fmt"
 	"io"
+	"net/http"
 	"os"
 	"os/exec"
 	"os/user"
 	"testing"
 
 	"github.com/stretchr/testify/assert"
+	"gopkg.in/jcmturner/gokrb5.v4/client"
+	"gopkg.in/jcmturner/gokrb5.v4/config"
 	"gopkg.in/jcmturner/gokrb5.v4/iana/nametype"
 	"gopkg.in/jcmturner/gokrb5.v4/testdata"
 	"gopkg.in/jcmturner/gokrb5.v4/types"
@@ -86,6 +89,9 @@ func TestLoadCCache(t *testing.T) {
 		t.Fatalf("error logging in with kinit: %v", err)
 	}
 	c, err := loadCCache()
+	if err != nil {
+		t.Errorf("error loading CCache: %v", err)
+	}
 	pn := c.GetClientPrincipalName()
 	assert.Equal(t, "testuser1", pn.GetPrincipalNameString(), "principal not as expected")
 	assert.Equal(t, "TEST.GOKRB5", c.GetClientRealm(), "realm not as expected")
@@ -101,6 +107,9 @@ func TestCCacheEntries(t *testing.T) {
 		t.Fatalf("error getting service ticket: %v", err)
 	}
 	c, err := loadCCache()
+	if err != nil {
+		t.Errorf("error loading CCache: %v", err)
+	}
 	creds := c.GetEntries()
 	var found bool
 	n := types.NewPrincipalName(nametype.KRB_NT_PRINCIPAL, spn)
@@ -114,3 +123,34 @@ func TestCCacheEntries(t *testing.T) {
 		t.Errorf("Entry for %s not found in CCache", spn)
 	}
 }
+
+func TestGetServiceTicketFromCCacheTGT(t *testing.T) {
+	err := login()
+	if err != nil {
+		t.Fatalf("error logging in with kinit: %v", err)
+	}
+	c, err := loadCCache()
+	if err != nil {
+		t.Errorf("error loading CCache: %v", err)
+	}
+	cfg, _ := config.NewConfigFromString(testdata.TEST_KRB5CONF)
+	cl, err := client.NewClientFromCCache(c)
+	if err != nil {
+		t.Fatalf("error generating client from ccache: %v", err)
+	}
+	cl.WithConfig(cfg)
+	url := os.Getenv("TEST_HTTP_URL")
+	if url == "" {
+		url = testdata.TEST_HTTP_URL
+	}
+	r, _ := http.NewRequest("GET", url, nil)
+	err = cl.SetSPNEGOHeader(r, "HTTP/host.test.gokrb5")
+	if err != nil {
+		t.Fatalf("error setting client SPNEGO header: %v", err)
+	}
+	httpResp, err := http.DefaultClient.Do(r)
+	if err != nil {
+		t.Fatalf("request error: %v\n", err)
+	}
+	assert.Equal(t, http.StatusOK, httpResp.StatusCode, "status code in response to client SPNEGO request not as expected")
+}