Skip to content

Commit a213b99

Browse files
committed
Unitテスト追加
1 parent 2064308 commit a213b99

File tree

4 files changed

+99
-0
lines changed

4 files changed

+99
-0
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ go 1.15
44

55
require (
66
github.com/gin-gonic/gin v1.6.3
7+
github.com/go-playground/assert/v2 v2.0.1
78
github.com/lestrrat-go/jwx v1.1.0
89
)

jwt.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ func GetToken(claims map[string]interface{}) ([]byte, error) {
117117
}
118118

119119
func Verify(c *gin.Context) {
120+
if len(c.GetHeader("Authorization")) <= 7 {
121+
c.AbortWithStatus(http.StatusUnauthorized)
122+
return
123+
}
124+
120125
pubKey, err := jwk.New(options.privateKey.PublicKey)
121126
if err != nil {
122127
c.AbortWithStatus(http.StatusInternalServerError)

jwt_test.go

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package jwt
2+
3+
import (
4+
"github.com/gin-gonic/gin"
5+
"github.com/go-playground/assert/v2"
6+
"io/ioutil"
7+
"net/http"
8+
"net/http/httptest"
9+
"testing"
10+
)
11+
12+
func TestVerifyEmptyToken(t *testing.T) {
13+
res := httptest.NewRecorder()
14+
c, _ := gin.CreateTestContext(res)
15+
16+
c.Request, _ = http.NewRequest("GET", "/", nil)
17+
18+
Verify(c)
19+
20+
assert.Equal(t, res.Code, http.StatusUnauthorized)
21+
}
22+
23+
func TestVerifyInvalidToken(t *testing.T) {
24+
pemBytes, err := ioutil.ReadFile("private.key")
25+
if err != nil {
26+
panic(err)
27+
}
28+
29+
if err := SetUp(pemBytes, Option{}); err != nil {
30+
panic(err)
31+
}
32+
33+
res := httptest.NewRecorder()
34+
c, _ := gin.CreateTestContext(res)
35+
36+
c.Request, _ = http.NewRequest("GET", "/", nil)
37+
c.Request.Header.Add("Authorization", "test")
38+
39+
Verify(c)
40+
41+
assert.Equal(t, res.Code, http.StatusUnauthorized)
42+
}
43+
44+
func TestVerifyValidToken(t *testing.T) {
45+
pemBytes, err := ioutil.ReadFile("private.key")
46+
if err != nil {
47+
panic(err)
48+
}
49+
50+
if err := SetUp(pemBytes, Option{}); err != nil {
51+
panic(err)
52+
}
53+
54+
res := httptest.NewRecorder()
55+
c, _ := gin.CreateTestContext(res)
56+
57+
c.Request, _ = http.NewRequest("GET", "/", nil)
58+
59+
token, err := GetToken(map[string]interface{}{})
60+
61+
c.Request.Header.Add("Authorization", "bearer "+string(token))
62+
63+
Verify(c)
64+
65+
assert.Equal(t, res.Code, http.StatusOK)
66+
}

private.key

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
MIIEpQIBAAKCAQEAwFs8yNuJ9TES826A76yvDn+vOTdMK2gntalZ9qYiCYvTJvs2
3+
z08nMWsdqpBsMFBRiec5dze60qHDSXTtIhIAXQT/1TgdbqAFVbF60jrm1iUHVUaJ
4+
D9CkEBxoXudaIMmeu5//mK89oJHj8KYTKtk5NhtgDLy5IT8G6g+IgfPYKMPb2v+q
5+
wtFLUqYddHQnxvGm22Gavfx4OCwRgEOk3IieI11DYzuSF4qNhi0GKNk/bXvOnDgy
6+
lZH6UH/XJ9R2B7O02gocISSKsf/Jo1q/FkLf4ach4UZaJhHq61O5hNzuhu2b1Win
7+
MYDqeVv25K9RCt2xVb/0WV7eu5XdhQrrFNueQwIDAQABAoIBAQC/F2RxXbfVv2TG
8+
NNceQvy9eJdITej7jkM0swLOhwh1V1Ty+snedRHIhFM6aLMx4/i8+Nob119fdJge
9+
12vkVuHJhvfoiBClH49tLB2J0D4WKz73tlTfQzRZVP9SmJ7ux51LY411z1F3vLcn
10+
ELUl8hpl6BgpTyrTHlvuFnRUNTxecUraD2g4SZWDgQyIpITkirgfs1Xr0lVNMumu
11+
mNsGZ2JV2rKXoqqAXaG6tPH5cEiA6hlS+f3awNFFImP8NKnShOI25rGyoJoFA0rt
12+
3aHwvpp9RnTcctDsCWF0Vnlbtpe9R++4iqblcEsB/DWmZvX3osW5llWpV4ory7No
13+
k/fhDMwRAoGBAOqIkH5vpJtZmx7sEMb7Ih0J7ARvpE0Avk6UvC+VOYNiHX7O2X/8
14+
VuwyaLlUmXLNDILMzTwM9A0rOa5tSuRgc/D2HFLg18I9SRvrM2a2hqoVmXdVWTYm
15+
+UgXBwBTGPU3poLrwgcKPf+nWfP3RIT6YvhIaDD9luBktaHyJwMT0BhdAoGBANH2
16+
aFaQbcV+Ge2UODK7YFJX2+B/zv+wyWPyfp7Pz/p7zhcwz4/hbnYMvFC8bYd/HrxB
17+
NsoRLqQyyzUWs7pwkzlXbOAfZTbYhQJZJTL2hO+4d9K4gFXeAsKX72a/F2f/UyAd
18+
RPSpHdgaSjSOKjEtuRp4nePmxD6HW8vrEKKtlKcfAoGBAIBE7lnoL2uzZy5TR528
19+
Dd055vZKJN7kcDDEEeQoRgtAJweKk9P2q4eEzlfGGCJ8WMJUxk54eyWUpXhrV9Ft
20+
mxuHTthZFkeqgwic60DaxO3S4Fsut5rxV9cAmRipWfYLWKszy6tUA7KF0aGnc7cS
21+
xfwqhal9l/3jtp76tDFvrZkVAoGBAK5qzZ4reKT47j0IRe8O7SM6TTOfuKt7hrD6
22+
fukapSDlu/xT1fkmQgba6Y0AGtTWawfj/Mm7oE1SzLAbXc5hOkwGLjG4ovH+x+99
23+
coN1elVRnmh0UFgEh7JzWLK3x4/i8IDbD69W1a3xmPczqiUUYJJ25GKwDxIKi91I
24+
NpeNLtHtAoGAMWxCkhLorGFx1ANsxFfqE58oyXqvQTgFzxCIEm49fZu3AEQJPwpM
25+
yAnHS7/ZM7nQbl6RIXg0jcPaA+d55Bop3L/8MfzOboOUXx3s1G4g3hl3TpHCVx1Q
26+
SYmGiLnSIP+KUsPglcGTtKkJYIZvhkVsjIe0rJBU0Rry8Mo7HbwWABk=
27+
-----END RSA PRIVATE KEY-----

0 commit comments

Comments
 (0)