From 289b5d10a0aacb74887aa39bc119f67c0d3fc696 Mon Sep 17 00:00:00 2001 From: Burcu Dogan Date: Tue, 16 Dec 2014 09:42:17 -0800 Subject: [PATCH] oauth2: handle token expiry for JWT Change-Id: I84b4c282ef00e87d13a9b16fdcebd97ea5ed4f4e Reviewed-on: https://go-review.googlesource.com/1650 Reviewed-by: Brad Fitzpatrick --- jwt.go | 2 +- jwt_test.go | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/jwt.go b/jwt.go index 892ce0c..7c02e3d 100644 --- a/jwt.go +++ b/jwt.go @@ -131,7 +131,7 @@ func (js jwtSource) Token() (*Token, error) { token.AccessToken, _ = b["access_token"].(string) token.TokenType, _ = b["token_type"].(string) token.raw = b - if e, ok := b["expires_in"].(int); ok { + if e, ok := b["expires_in"].(float64); ok { token.Expiry = time.Now().Add(time.Duration(e) * time.Second) } if idtoken, ok := b["id_token"].(string); ok { diff --git a/jwt_test.go b/jwt_test.go index 2fe371b..3cc5671 100644 --- a/jwt_test.go +++ b/jwt_test.go @@ -44,7 +44,8 @@ func TestJWTFetch_JSONResponse(t *testing.T) { w.Write([]byte(`{ "access_token": "90d64460d14870c08c81352a05dedd3465940a7c", "scope": "user", - "token_type": "bearer" + "token_type": "bearer", + "expires_in": 3600 }`)) })) defer ts.Close() @@ -59,13 +60,16 @@ func TestJWTFetch_JSONResponse(t *testing.T) { t.Fatal(err) } if tok.Expired() { - t.Errorf("Token shouldn't be expired.") + t.Errorf("Token shouldn't be expired") } if tok.AccessToken != "90d64460d14870c08c81352a05dedd3465940a7c" { - t.Errorf("Unexpected access token, %#v.", tok.AccessToken) + t.Errorf("Unexpected access token, %#v", tok.AccessToken) } if tok.TokenType != "bearer" { - t.Errorf("Unexpected token type, %#v.", tok.TokenType) + t.Errorf("Unexpected token type, %#v", tok.TokenType) + } + if tok.Expiry.IsZero() { + t.Errorf("Unexpected token expiry, %#v", tok.Expiry) } scope := tok.Extra("scope") if scope != "user" {