Browse Source

Merge pull request #9773 from gyuho/auth-test

integration: test lease revoke routine with JWT token
Gyuho Lee 7 years ago
parent
commit
f5e52c995c
2 changed files with 24 additions and 2 deletions
  1. 13 1
      integration/cluster.go
  2. 11 1
      integration/v3_auth_test.go

+ 13 - 1
integration/cluster.go

@@ -107,6 +107,8 @@ var (
 		ClientCertAuth: true,
 	}
 
+	defaultTokenJWT = "jwt,pub-key=./fixtures/server.crt,priv-key=./fixtures/server.key.insecure,sign-method=RS256,ttl=1s"
+
 	lg = zap.NewNop()
 )
 
@@ -123,6 +125,8 @@ type ClusterConfig struct {
 
 	DiscoveryURL string
 
+	AuthToken string
+
 	UseGRPC bool
 
 	QuotaBackendBytes int64
@@ -272,6 +276,7 @@ func (c *cluster) mustNewMember(t *testing.T) *member {
 	m := mustNewMember(t,
 		memberConfig{
 			name:                     c.name(rand.Int()),
+			authToken:                c.cfg.AuthToken,
 			peerTLS:                  c.cfg.PeerTLS,
 			clientTLS:                c.cfg.ClientTLS,
 			quotaBackendBytes:        c.cfg.QuotaBackendBytes,
@@ -557,6 +562,7 @@ type memberConfig struct {
 	name                     string
 	peerTLS                  *transport.TLSInfo
 	clientTLS                *transport.TLSInfo
+	authToken                string
 	quotaBackendBytes        int64
 	maxTxnOps                uint
 	maxRequestBytes          uint
@@ -632,7 +638,13 @@ func mustNewMember(t *testing.T, mcfg memberConfig) *member {
 	if mcfg.snapshotCatchUpEntries != 0 {
 		m.SnapshotCatchUpEntries = mcfg.snapshotCatchUpEntries
 	}
-	m.AuthToken = "simple"              // for the purpose of integration testing, simple token is enough
+
+	// for the purpose of integration testing, simple token is enough
+	m.AuthToken = "simple"
+	if mcfg.authToken != "" {
+		m.AuthToken = mcfg.authToken
+	}
+
 	m.BcryptCost = uint(bcrypt.MinCost) // use min bcrypt cost to speedy up integration testing
 
 	m.grpcServerOpts = []grpc.ServerOption{}

+ 11 - 1
integration/v3_auth_test.go

@@ -109,9 +109,19 @@ func TestV3AuthRevision(t *testing.T) {
 // TestV3AuthWithLeaseRevokeWithRoot ensures that granted leases
 // with root user be revoked after TTL.
 func TestV3AuthWithLeaseRevokeWithRoot(t *testing.T) {
+	testV3AuthWithLeaseRevokeWithRoot(t, ClusterConfig{Size: 1})
+}
+
+// TestV3AuthWithLeaseRevokeWithRootJWT creates a lease with a JWT-token enabled cluster.
+// And tests if server is able to revoke expiry lease item.
+func TestV3AuthWithLeaseRevokeWithRootJWT(t *testing.T) {
+	testV3AuthWithLeaseRevokeWithRoot(t, ClusterConfig{Size: 1, AuthToken: defaultTokenJWT})
+}
+
+func testV3AuthWithLeaseRevokeWithRoot(t *testing.T, ccfg ClusterConfig) {
 	defer testutil.AfterTest(t)
 
-	clus := NewClusterV3(t, &ClusterConfig{Size: 1})
+	clus := NewClusterV3(t, &ccfg)
 	defer clus.Terminate(t)
 
 	api := toGRPC(clus.Client(0))