@@ -4,10 +4,13 @@ package mock_auth
4
4
5
5
import (
6
6
"context"
7
+ "fmt"
7
8
"log"
8
9
"net/http"
9
10
"net/http/httptest"
11
+ "os"
10
12
"testing"
13
+ "time"
11
14
12
15
"github.com/stretchr/testify/assert"
13
16
"github.com/twitchdev/twitch-cli/internal/database"
@@ -19,6 +22,10 @@ var a *assert.Assertions
19
22
var firstRun = true
20
23
var ac = database.AuthenticationClient {ID : "222" , Secret : "333" , Name : "test_client" , IsExtension : false }
21
24
25
+ func TestMain (m * testing.M ) {
26
+
27
+ os .Exit (m .Run ())
28
+ }
22
29
func TestAreValidScopes (t * testing.T ) {
23
30
a := test_setup .SetupTestEnv (t )
24
31
@@ -70,6 +77,46 @@ func TestUserToken(t *testing.T) {
70
77
a .Equal (400 , resp .StatusCode )
71
78
}
72
79
80
+ func TestValidateToken (t * testing.T ) {
81
+ a = test_setup .SetupTestEnv (t )
82
+ ts := httptest .NewServer (baseMiddleware (ValidateTokenEndpoint {}))
83
+
84
+ req , _ := http .NewRequest (http .MethodGet , ts .URL + ValidateTokenEndpoint {}.Path (), nil )
85
+ resp , err := http .DefaultClient .Do (req )
86
+ a .Nil (err , err )
87
+ a .Equal (401 , resp .StatusCode )
88
+
89
+ req .Header .Set ("Authorization" , fmt .Sprintf ("Bearer %v" , "auth.Token" ))
90
+ resp , err = http .DefaultClient .Do (req )
91
+ a .Nil (err , err )
92
+ a .Equal (401 , resp .StatusCode )
93
+
94
+ db , err := database .NewConnection ()
95
+ a .Nil (err , err )
96
+ defer db .DB .Close ()
97
+
98
+ auth , err := db .NewQuery (nil , 0 ).CreateAuthorization (database.Authorization {
99
+ ClientID : ac .ID ,
100
+ ExpiresAt : util .GetTimestamp ().Add (time .Hour * 4 ).Format (time .RFC3339 ),
101
+ Scopes : "" ,
102
+ })
103
+
104
+ req .Header .Set ("Authorization" , fmt .Sprintf ("Bearer %v" , auth .Token ))
105
+ resp , err = http .DefaultClient .Do (req )
106
+ a .Nil (err , err )
107
+ a .Equal (200 , resp .StatusCode )
108
+
109
+ auth , err = db .NewQuery (nil , 0 ).CreateAuthorization (database.Authorization {
110
+ ClientID : ac .ID ,
111
+ ExpiresAt : util .GetTimestamp ().Add (time .Hour * 4 ).Format (time .RFC3339 ),
112
+ Scopes : "user:read:email" ,
113
+ UserID : "1" ,
114
+ })
115
+ req .Header .Set ("Authorization" , fmt .Sprintf ("Oauth %v" , auth .Token ))
116
+ resp , err = http .DefaultClient .Do (req )
117
+ a .Nil (err , err )
118
+ a .Equal (200 , resp .StatusCode )
119
+ }
73
120
func TestAppAccessToken (t * testing.T ) {
74
121
a = test_setup .SetupTestEnv (t )
75
122
ts := httptest .NewServer (baseMiddleware (AppAccessTokenEndpoint {}))
@@ -99,6 +146,7 @@ func TestAppAccessToken(t *testing.T) {
99
146
a .Nil (err )
100
147
a .Equal (200 , resp .StatusCode )
101
148
}
149
+
102
150
func baseMiddleware (next http.Handler ) http.Handler {
103
151
return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
104
152
ctx := context .Background ()
0 commit comments