Fix parsing AcquireJob MessageQueueTokenExpiredError (#2837)
This commit is contained in:
parent
215b245881
commit
52fc819339
|
|
@ -634,7 +634,18 @@ func (c *Client) AcquireJobs(ctx context.Context, runnerScaleSetId int, messageQ
|
||||||
}
|
}
|
||||||
|
|
||||||
if resp.StatusCode != http.StatusOK {
|
if resp.StatusCode != http.StatusOK {
|
||||||
return nil, ParseActionsErrorFromResponse(resp)
|
if resp.StatusCode != http.StatusUnauthorized {
|
||||||
|
return nil, ParseActionsErrorFromResponse(resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
defer resp.Body.Close()
|
||||||
|
body, err := io.ReadAll(resp.Body)
|
||||||
|
body = trimByteOrderMark(body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, &MessageQueueTokenExpiredError{msg: string(body)}
|
||||||
}
|
}
|
||||||
|
|
||||||
var acquiredJobs *Int64List
|
var acquiredJobs *Int64List
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package actions_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
@ -84,6 +85,39 @@ func TestAcquireJobs(t *testing.T) {
|
||||||
assert.NotNil(t, err)
|
assert.NotNil(t, err)
|
||||||
assert.Equalf(t, actualRetry, expectedRetry, "A retry was expected after the first request but got: %v", actualRetry)
|
assert.Equalf(t, actualRetry, expectedRetry, "A retry was expected after the first request but got: %v", actualRetry)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("Should return MessageQueueTokenExpiredError when http error is not Unauthorized", func(t *testing.T) {
|
||||||
|
want := []int64{1}
|
||||||
|
|
||||||
|
session := &actions.RunnerScaleSetSession{
|
||||||
|
RunnerScaleSet: &actions.RunnerScaleSet{Id: 1},
|
||||||
|
MessageQueueAccessToken: "abc",
|
||||||
|
}
|
||||||
|
requestIDs := want
|
||||||
|
|
||||||
|
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if strings.HasSuffix(r.URL.Path, "/acquirablejobs") {
|
||||||
|
w.Write([]byte(`{"count": 1}`))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if r.Method == http.MethodPost {
|
||||||
|
http.Error(w, "Session expired", http.StatusUnauthorized)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
|
||||||
|
client, err := actions.NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
_, err = client.GetAcquirableJobs(ctx, 1)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
got, err := client.AcquireJobs(ctx, session.RunnerScaleSet.Id, session.MessageQueueAccessToken, requestIDs)
|
||||||
|
require.Error(t, err)
|
||||||
|
assert.Nil(t, got)
|
||||||
|
var expectedErr *actions.MessageQueueTokenExpiredError
|
||||||
|
assert.True(t, errors.As(err, &expectedErr))
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetAcquirableJobs(t *testing.T) {
|
func TestGetAcquirableJobs(t *testing.T) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue