@@ -31,6 +31,12 @@ func TestBotTokenLifecycle(t *testing.T) {
3131 facultyID := uuid .New ()
3232 tokenID := uuid .New ()
3333 var storedHash string
34+ facultyUser := database.User {
35+ Uid : facultyID ,
36+ Role : database.NullUserRole {UserRole : database .UserRoleFaculty , Valid : true },
37+ }
38+
39+ mockQueries .On ("GetUserByID" , mock .Anything , facultyID ).Return (facultyUser , nil ).Times (3 )
3440
3541 mockQueries .On ("CreateBotToken" , mock .Anything , mock .MatchedBy (func (arg database.CreateBotTokenParams ) bool {
3642 storedHash = arg .TokenHash
@@ -212,6 +218,12 @@ func TestBotTokenManagementRequiresFaculty(t *testing.T) {
212218
213219 userID := uuid .New ()
214220 tokenID := uuid .New ()
221+ studentUser := database.User {
222+ Uid : userID ,
223+ Role : database.NullUserRole {UserRole : database .UserRoleStudent , Valid : true },
224+ }
225+
226+ mockQueries .On ("GetUserByID" , mock .Anything , userID ).Return (studentUser , nil ).Times (3 )
215227
216228 createReq := httptest .NewRequest (http .MethodPost , "/api/v1/bot/tokens" , bytes .NewBufferString (`{"name":"deploy-bot"}` ))
217229 createReq .Header .Set ("Authorization" , "Bearer " + makeJWT (t , userID , string (database .UserRoleStudent )))
@@ -232,6 +244,27 @@ func TestBotTokenManagementRequiresFaculty(t *testing.T) {
232244 assert .Equal (t , http .StatusForbidden , revokeRes .Code )
233245}
234246
247+ func TestBotTokenManagementUsesDatabaseRole (t * testing.T ) {
248+ mockQueries := mocks .NewQuerier (t )
249+ routerUnderTest := newTestRouter (mockQueries )
250+
251+ facultyID := uuid .New ()
252+ facultyUser := database.User {
253+ Uid : facultyID ,
254+ Role : database.NullUserRole {UserRole : database .UserRoleFaculty , Valid : true },
255+ }
256+
257+ mockQueries .On ("GetUserByID" , mock .Anything , facultyID ).Return (facultyUser , nil ).Once ()
258+ mockQueries .On ("ListBotTokens" , mock .Anything ).Return ([]database.ListBotTokensRow {}, nil ).Once ()
259+
260+ req := httptest .NewRequest (http .MethodGet , "/api/v1/bot/tokens" , nil )
261+ req .Header .Set ("Authorization" , "Bearer " + makeJWT (t , facultyID , string (database .UserRoleStudent )))
262+ res := httptest .NewRecorder ()
263+ routerUnderTest .ServeHTTP (res , req )
264+
265+ assert .Equal (t , http .StatusOK , res .Code )
266+ }
267+
235268func newTestRouter (queries database.Querier ) http.Handler {
236269 cfg := & config.Config {
237270 Env : "test" ,
0 commit comments