@@ -2,6 +2,7 @@ package actions_test
22
33import (
44 "context"
5+ "errors"
56 "net/http"
67 "strings"
78 "testing"
@@ -84,6 +85,39 @@ func TestAcquireJobs(t *testing.T) {
8485 assert .NotNil (t , err )
8586 assert .Equalf (t , actualRetry , expectedRetry , "A retry was expected after the first request but got: %v" , actualRetry )
8687 })
88+
89+ t .Run ("Should return MessageQueueTokenExpiredError when http error is not Unauthorized" , func (t * testing.T ) {
90+ want := []int64 {1 }
91+
92+ session := & actions.RunnerScaleSetSession {
93+ RunnerScaleSet : & actions.RunnerScaleSet {Id : 1 },
94+ MessageQueueAccessToken : "abc" ,
95+ }
96+ requestIDs := want
97+
98+ server := newActionsServer (t , http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
99+ if strings .HasSuffix (r .URL .Path , "/acquirablejobs" ) {
100+ w .Write ([]byte (`{"count": 1}` ))
101+ return
102+ }
103+ if r .Method == http .MethodPost {
104+ http .Error (w , "Session expired" , http .StatusUnauthorized )
105+ return
106+ }
107+ }))
108+
109+ client , err := actions .NewClient (server .configURLForOrg ("my-org" ), auth )
110+ require .NoError (t , err )
111+
112+ _ , err = client .GetAcquirableJobs (ctx , 1 )
113+ require .NoError (t , err )
114+
115+ got , err := client .AcquireJobs (ctx , session .RunnerScaleSet .Id , session .MessageQueueAccessToken , requestIDs )
116+ require .Error (t , err )
117+ assert .Nil (t , got )
118+ var expectedErr * actions.MessageQueueTokenExpiredError
119+ assert .True (t , errors .As (err , & expectedErr ))
120+ })
87121}
88122
89123func TestGetAcquirableJobs (t * testing.T ) {
0 commit comments