integration: add "TestV3AuthWithLeaseRevokeWithRoot"

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
This commit is contained in:
Gyuho Lee 2017-12-14 21:19:44 -08:00
parent 85af65eca9
commit 9fb7bbdb2d

View File

@ -106,6 +106,58 @@ func TestV3AuthRevision(t *testing.T) {
}
}
// TestV3AuthWithLeaseRevokeWithRoot ensures that granted leases
// with root user be revoked after TTL.
func TestV3AuthWithLeaseRevokeWithRoot(t *testing.T) {
defer testutil.AfterTest(t)
clus := NewClusterV3(t, &ClusterConfig{Size: 1})
defer clus.Terminate(t)
api := toGRPC(clus.Client(0))
authSetupRoot(t, api.Auth)
rootc, cerr := clientv3.New(clientv3.Config{
Endpoints: clus.Client(0).Endpoints(),
Username: "root",
Password: "123",
})
if cerr != nil {
t.Fatal(cerr)
}
defer rootc.Close()
leaseResp, err := rootc.Grant(context.TODO(), 2)
if err != nil {
t.Fatal(err)
}
leaseID := leaseResp.ID
if _, err = rootc.Put(context.TODO(), "foo", "bar", clientv3.WithLease(leaseID)); err != nil {
t.Fatal(err)
}
// wait for lease expire
time.Sleep(3 * time.Second)
tresp, terr := api.Lease.LeaseTimeToLive(
context.TODO(),
&pb.LeaseTimeToLiveRequest{
ID: int64(leaseID),
Keys: true,
},
)
if terr != nil {
t.Error(terr)
}
if len(tresp.Keys) > 0 || tresp.GrantedTTL != 0 {
t.Errorf("lease %016x should have been revoked, got %+v", leaseID, tresp)
}
if tresp.TTL != -1 {
t.Errorf("lease %016x should have been expired, got %+v", leaseID, tresp)
}
}
type user struct {
name string
password string