Renames, style changes and unexports (#3)
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
@@ -6,7 +6,6 @@ import (
|
|||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
@@ -18,13 +17,13 @@ func TestClient_Do(t *testing.T) {
|
|||||||
}))
|
}))
|
||||||
defer server.Close()
|
defer server.Close()
|
||||||
|
|
||||||
client, err := scaleset.NewClient("https://localhost/org/repo", &scaleset.ActionsAuth{Token: "token"})
|
client, err := NewClient("https://localhost/org/repo", &ActionsAuth{Token: "token"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", server.URL, nil)
|
req, err := http.NewRequest("GET", server.URL, nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
resp, err := client.Do(req)
|
resp, err := client.do(req)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
body, err := io.ReadAll(resp.Body)
|
body, err := io.ReadAll(resp.Body)
|
||||||
@@ -44,13 +43,13 @@ func TestClient_Do(t *testing.T) {
|
|||||||
}))
|
}))
|
||||||
defer server.Close()
|
defer server.Close()
|
||||||
|
|
||||||
client, err := scaleset.NewClient("https://localhost/org/repo", &scaleset.ActionsAuth{Token: "token"})
|
client, err := NewClient("https://localhost/org/repo", &ActionsAuth{Token: "token"})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", server.URL, nil)
|
req, err := http.NewRequest("GET", server.URL, nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
resp, err := client.Do(req)
|
resp, err := client.do(req)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
body, err := io.ReadAll(resp.Body)
|
body, err := io.ReadAll(resp.Body)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -6,27 +6,26 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGenerateJitRunnerConfig(t *testing.T) {
|
func TestGenerateJitRunnerConfig(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run("Get JIT Config for Runner", func(t *testing.T) {
|
t.Run("Get JIT Config for Runner", func(t *testing.T) {
|
||||||
want := &scaleset.RunnerScaleSetJitRunnerConfig{}
|
want := &RunnerScaleSetJitRunnerConfig{}
|
||||||
response := []byte(`{"count":1,"value":[{"id":1,"name":"scale-set-name"}]}`)
|
response := []byte(`{"count":1,"value":[{"id":1,"name":"scale-set-name"}]}`)
|
||||||
|
|
||||||
runnerSettings := &scaleset.RunnerScaleSetJitRunnerSetting{}
|
runnerSettings := &RunnerScaleSetJitRunnerSetting{}
|
||||||
|
|
||||||
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
||||||
w.Write(response)
|
w.Write(response)
|
||||||
}))
|
}))
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GenerateJitRunnerConfig(ctx, runnerSettings, 1)
|
got, err := client.GenerateJitRunnerConfig(ctx, runnerSettings, 1)
|
||||||
@@ -35,7 +34,7 @@ func TestGenerateJitRunnerConfig(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Default retries on server error", func(t *testing.T) {
|
t.Run("Default retries on server error", func(t *testing.T) {
|
||||||
runnerSettings := &scaleset.RunnerScaleSetJitRunnerSetting{}
|
runnerSettings := &RunnerScaleSetJitRunnerSetting{}
|
||||||
|
|
||||||
retryMax := 1
|
retryMax := 1
|
||||||
actualRetry := 0
|
actualRetry := 0
|
||||||
@@ -46,11 +45,11 @@ func TestGenerateJitRunnerConfig(t *testing.T) {
|
|||||||
actualRetry++
|
actualRetry++
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(1),
|
WithRetryMax(1),
|
||||||
scaleset.WithRetryWaitMax(1*time.Millisecond),
|
WithRetryWaitMax(1*time.Millisecond),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -8,14 +8,13 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestAcquireJobs(t *testing.T) {
|
func TestAcquireJobs(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -23,8 +22,8 @@ func TestAcquireJobs(t *testing.T) {
|
|||||||
want := []int64{1}
|
want := []int64{1}
|
||||||
response := []byte(`{"value": [1]}`)
|
response := []byte(`{"value": [1]}`)
|
||||||
|
|
||||||
session := &scaleset.RunnerScaleSetSession{
|
session := &RunnerScaleSetSession{
|
||||||
RunnerScaleSet: &scaleset.RunnerScaleSet{Id: 1},
|
RunnerScaleSet: &RunnerScaleSet{ID: 1},
|
||||||
MessageQueueAccessToken: "abc",
|
MessageQueueAccessToken: "abc",
|
||||||
}
|
}
|
||||||
requestIDs := want
|
requestIDs := want
|
||||||
@@ -38,23 +37,23 @@ func TestAcquireJobs(t *testing.T) {
|
|||||||
w.Write(response)
|
w.Write(response)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetAcquirableJobs(ctx, 1)
|
_, err = client.GetAcquirableJobs(ctx, 1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.AcquireJobs(ctx, session.RunnerScaleSet.Id, session.MessageQueueAccessToken, requestIDs)
|
got, err := client.AcquireJobs(ctx, session.RunnerScaleSet.ID, session.MessageQueueAccessToken, requestIDs)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, want, got)
|
assert.Equal(t, want, got)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Default retries on server error", func(t *testing.T) {
|
t.Run("Default retries on server error", func(t *testing.T) {
|
||||||
session := &scaleset.RunnerScaleSetSession{
|
session := &RunnerScaleSetSession{
|
||||||
RunnerScaleSet: &scaleset.RunnerScaleSet{Id: 1},
|
RunnerScaleSet: &RunnerScaleSet{ID: 1},
|
||||||
MessageQueueAccessToken: "abc",
|
MessageQueueAccessToken: "abc",
|
||||||
}
|
}
|
||||||
var requestIDs = []int64{1}
|
requestIDs := []int64{1}
|
||||||
|
|
||||||
retryMax := 1
|
retryMax := 1
|
||||||
actualRetry := 0
|
actualRetry := 0
|
||||||
@@ -70,18 +69,18 @@ func TestAcquireJobs(t *testing.T) {
|
|||||||
actualRetry++
|
actualRetry++
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(retryMax),
|
WithRetryMax(retryMax),
|
||||||
scaleset.WithRetryWaitMax(1*time.Millisecond),
|
WithRetryWaitMax(1*time.Millisecond),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetAcquirableJobs(ctx, 1)
|
_, err = client.GetAcquirableJobs(ctx, 1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.AcquireJobs(context.Background(), session.RunnerScaleSet.Id, session.MessageQueueAccessToken, requestIDs)
|
_, err = client.AcquireJobs(context.Background(), session.RunnerScaleSet.ID, session.MessageQueueAccessToken, requestIDs)
|
||||||
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)
|
||||||
})
|
})
|
||||||
@@ -89,8 +88,8 @@ func TestAcquireJobs(t *testing.T) {
|
|||||||
t.Run("Should return MessageQueueTokenExpiredError when http error is not Unauthorized", func(t *testing.T) {
|
t.Run("Should return MessageQueueTokenExpiredError when http error is not Unauthorized", func(t *testing.T) {
|
||||||
want := []int64{1}
|
want := []int64{1}
|
||||||
|
|
||||||
session := &scaleset.RunnerScaleSetSession{
|
session := &RunnerScaleSetSession{
|
||||||
RunnerScaleSet: &scaleset.RunnerScaleSet{Id: 1},
|
RunnerScaleSet: &RunnerScaleSet{ID: 1},
|
||||||
MessageQueueAccessToken: "abc",
|
MessageQueueAccessToken: "abc",
|
||||||
}
|
}
|
||||||
requestIDs := want
|
requestIDs := want
|
||||||
@@ -106,45 +105,45 @@ func TestAcquireJobs(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetAcquirableJobs(ctx, 1)
|
_, err = client.GetAcquirableJobs(ctx, 1)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.AcquireJobs(ctx, session.RunnerScaleSet.Id, session.MessageQueueAccessToken, requestIDs)
|
got, err := client.AcquireJobs(ctx, session.RunnerScaleSet.ID, session.MessageQueueAccessToken, requestIDs)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Nil(t, got)
|
assert.Nil(t, got)
|
||||||
var expectedErr *scaleset.MessageQueueTokenExpiredError
|
var expectedErr *MessageQueueTokenExpiredError
|
||||||
assert.True(t, errors.As(err, &expectedErr))
|
assert.True(t, errors.As(err, &expectedErr))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetAcquirableJobs(t *testing.T) {
|
func TestGetAcquirableJobs(t *testing.T) {
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run("Acquire Job", func(t *testing.T) {
|
t.Run("Acquire Job", func(t *testing.T) {
|
||||||
want := &scaleset.AcquirableJobList{}
|
want := &AcquirableJobList{}
|
||||||
response := []byte(`{"count": 0}`)
|
response := []byte(`{"count": 0}`)
|
||||||
|
|
||||||
runnerScaleSet := &scaleset.RunnerScaleSet{Id: 1}
|
runnerScaleSet := &RunnerScaleSet{ID: 1}
|
||||||
|
|
||||||
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
||||||
w.Write(response)
|
w.Write(response)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetAcquirableJobs(context.Background(), runnerScaleSet.Id)
|
got, err := client.GetAcquirableJobs(context.Background(), runnerScaleSet.ID)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, want, got)
|
assert.Equal(t, want, got)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Default retries on server error", func(t *testing.T) {
|
t.Run("Default retries on server error", func(t *testing.T) {
|
||||||
runnerScaleSet := &scaleset.RunnerScaleSet{Id: 1}
|
runnerScaleSet := &RunnerScaleSet{ID: 1}
|
||||||
|
|
||||||
retryMax := 1
|
retryMax := 1
|
||||||
|
|
||||||
@@ -156,15 +155,15 @@ func TestGetAcquirableJobs(t *testing.T) {
|
|||||||
actualRetry++
|
actualRetry++
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(retryMax),
|
WithRetryMax(retryMax),
|
||||||
scaleset.WithRetryWaitMax(1*time.Millisecond),
|
WithRetryWaitMax(1*time.Millisecond),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetAcquirableJobs(context.Background(), runnerScaleSet.Id)
|
_, err = client.GetAcquirableJobs(context.Background(), runnerScaleSet.ID)
|
||||||
require.Error(t, err)
|
require.Error(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)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/actions/scaleset/testserver"
|
"github.com/actions/scaleset/testserver"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
@@ -26,13 +25,13 @@ func TestClientProxy(t *testing.T) {
|
|||||||
return proxyConfig.ProxyFunc()(req.URL)
|
return proxyConfig.ProxyFunc()(req.URL)
|
||||||
}
|
}
|
||||||
|
|
||||||
c, err := scaleset.NewClient("http://github.com/org/repo", nil, scaleset.WithProxy(proxyFunc))
|
c, err := NewClient("http://github.com/org/repo", nil, WithProxy(proxyFunc))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
req, err := http.NewRequest(http.MethodGet, "http://example.com", nil)
|
req, err := http.NewRequest(http.MethodGet, "http://example.com", nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = c.Do(req)
|
_, err = c.do(req)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.True(t, serverCalled)
|
assert.True(t, serverCalled)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -9,20 +9,19 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetMessage(t *testing.T) {
|
func TestGetMessage(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjI1MTYyMzkwMjJ9.tlrHslTmDkoqnc4Kk9ISoKoUNDfHo-kjlH-ByISBqzE"
|
token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjI1MTYyMzkwMjJ9.tlrHslTmDkoqnc4Kk9ISoKoUNDfHo-kjlH-ByISBqzE"
|
||||||
runnerScaleSetMessage := &scaleset.RunnerScaleSetMessage{
|
runnerScaleSetMessage := &RunnerScaleSetMessage{
|
||||||
MessageId: 1,
|
MessageID: 1,
|
||||||
MessageType: "rssType",
|
MessageType: "rssType",
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,7 +32,7 @@ func TestGetMessage(t *testing.T) {
|
|||||||
w.Write(response)
|
w.Write(response)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(s.configURLForOrg("my-org"), auth)
|
client, err := NewClient(s.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetMessage(ctx, s.URL, token, 0, 10)
|
got, err := client.GetMessage(ctx, s.URL, token, 0, 10)
|
||||||
@@ -50,7 +49,7 @@ func TestGetMessage(t *testing.T) {
|
|||||||
w.Write(response)
|
w.Write(response)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(s.configURLForOrg("my-org"), auth)
|
client, err := NewClient(s.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetMessage(ctx, s.URL, token, 1, 10)
|
got, err := client.GetMessage(ctx, s.URL, token, 1, 10)
|
||||||
@@ -69,11 +68,11 @@ func TestGetMessage(t *testing.T) {
|
|||||||
actualRetry++
|
actualRetry++
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(retryMax),
|
WithRetryMax(retryMax),
|
||||||
scaleset.WithRetryWaitMax(1*time.Millisecond),
|
WithRetryWaitMax(1*time.Millisecond),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -87,18 +86,18 @@ func TestGetMessage(t *testing.T) {
|
|||||||
w.WriteHeader(http.StatusUnauthorized)
|
w.WriteHeader(http.StatusUnauthorized)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetMessage(ctx, server.URL, token, 0, 10)
|
_, err = client.GetMessage(ctx, server.URL, token, 0, 10)
|
||||||
require.NotNil(t, err)
|
require.NotNil(t, err)
|
||||||
|
|
||||||
var expectedErr *scaleset.MessageQueueTokenExpiredError
|
var expectedErr *MessageQueueTokenExpiredError
|
||||||
require.True(t, errors.As(err, &expectedErr))
|
require.True(t, errors.As(err, &expectedErr))
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Status code not found", func(t *testing.T) {
|
t.Run("Status code not found", func(t *testing.T) {
|
||||||
want := scaleset.ActionsError{
|
want := ActionsError{
|
||||||
Err: errors.New("unknown exception"),
|
Err: errors.New("unknown exception"),
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
}
|
}
|
||||||
@@ -106,7 +105,7 @@ func TestGetMessage(t *testing.T) {
|
|||||||
w.WriteHeader(http.StatusNotFound)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetMessage(ctx, server.URL, token, 0, 10)
|
_, err = client.GetMessage(ctx, server.URL, token, 0, 10)
|
||||||
@@ -120,7 +119,7 @@ func TestGetMessage(t *testing.T) {
|
|||||||
w.Header().Set("Content-Type", "text/plain")
|
w.Header().Set("Content-Type", "text/plain")
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetMessage(ctx, server.URL, token, 0, 10)
|
_, err = client.GetMessage(ctx, server.URL, token, 0, 10)
|
||||||
@@ -129,7 +128,7 @@ func TestGetMessage(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("Capacity error handling", func(t *testing.T) {
|
t.Run("Capacity error handling", func(t *testing.T) {
|
||||||
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
hc := r.Header.Get(scaleset.HeaderScaleSetMaxCapacity)
|
hc := r.Header.Get(HeaderScaleSetMaxCapacity)
|
||||||
c, err := strconv.Atoi(hc)
|
c, err := strconv.Atoi(hc)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.GreaterOrEqual(t, c, 0)
|
assert.GreaterOrEqual(t, c, 0)
|
||||||
@@ -138,17 +137,17 @@ func TestGetMessage(t *testing.T) {
|
|||||||
w.Header().Set("Content-Type", "text/plain")
|
w.Header().Set("Content-Type", "text/plain")
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetMessage(ctx, server.URL, token, 0, -1)
|
_, err = client.GetMessage(ctx, server.URL, token, 0, -1)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
// Ensure we don't send requests with negative capacity
|
// Ensure we don't send requests with negative capacity
|
||||||
assert.False(t, errors.Is(err, &scaleset.ActionsError{}))
|
assert.False(t, errors.Is(err, &ActionsError{}))
|
||||||
|
|
||||||
_, err = client.GetMessage(ctx, server.URL, token, 0, 0)
|
_, err = client.GetMessage(ctx, server.URL, token, 0, 0)
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
var expectedErr *scaleset.ActionsError
|
var expectedErr *ActionsError
|
||||||
assert.ErrorAs(t, err, &expectedErr)
|
assert.ErrorAs(t, err, &expectedErr)
|
||||||
assert.Equal(t, http.StatusBadRequest, expectedErr.StatusCode)
|
assert.Equal(t, http.StatusBadRequest, expectedErr.StatusCode)
|
||||||
})
|
})
|
||||||
@@ -156,13 +155,13 @@ func TestGetMessage(t *testing.T) {
|
|||||||
|
|
||||||
func TestDeleteMessage(t *testing.T) {
|
func TestDeleteMessage(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjI1MTYyMzkwMjJ9.tlrHslTmDkoqnc4Kk9ISoKoUNDfHo-kjlH-ByISBqzE"
|
token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjI1MTYyMzkwMjJ9.tlrHslTmDkoqnc4Kk9ISoKoUNDfHo-kjlH-ByISBqzE"
|
||||||
runnerScaleSetMessage := &scaleset.RunnerScaleSetMessage{
|
runnerScaleSetMessage := &RunnerScaleSetMessage{
|
||||||
MessageId: 1,
|
MessageID: 1,
|
||||||
MessageType: "rssType",
|
MessageType: "rssType",
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,10 +170,10 @@ func TestDeleteMessage(t *testing.T) {
|
|||||||
w.WriteHeader(http.StatusNoContent)
|
w.WriteHeader(http.StatusNoContent)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
err = client.DeleteMessage(ctx, server.URL, token, runnerScaleSetMessage.MessageId)
|
err = client.DeleteMessage(ctx, server.URL, token, runnerScaleSetMessage.MessageID)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -183,12 +182,12 @@ func TestDeleteMessage(t *testing.T) {
|
|||||||
w.WriteHeader(http.StatusUnauthorized)
|
w.WriteHeader(http.StatusUnauthorized)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
err = client.DeleteMessage(ctx, server.URL, token, 0)
|
err = client.DeleteMessage(ctx, server.URL, token, 0)
|
||||||
require.NotNil(t, err)
|
require.NotNil(t, err)
|
||||||
var expectedErr *scaleset.MessageQueueTokenExpiredError
|
var expectedErr *MessageQueueTokenExpiredError
|
||||||
assert.True(t, errors.As(err, &expectedErr))
|
assert.True(t, errors.As(err, &expectedErr))
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -198,12 +197,12 @@ func TestDeleteMessage(t *testing.T) {
|
|||||||
w.Header().Set("Content-Type", "text/plain")
|
w.Header().Set("Content-Type", "text/plain")
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
err = client.DeleteMessage(ctx, server.URL, token, runnerScaleSetMessage.MessageId)
|
err = client.DeleteMessage(ctx, server.URL, token, runnerScaleSetMessage.MessageID)
|
||||||
require.NotNil(t, err)
|
require.NotNil(t, err)
|
||||||
var expectedErr *scaleset.ActionsError
|
var expectedErr *ActionsError
|
||||||
assert.True(t, errors.As(err, &expectedErr))
|
assert.True(t, errors.As(err, &expectedErr))
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@@ -216,21 +215,21 @@ func TestDeleteMessage(t *testing.T) {
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
retryMax := 1
|
retryMax := 1
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(retryMax),
|
WithRetryMax(retryMax),
|
||||||
scaleset.WithRetryWaitMax(1*time.Nanosecond),
|
WithRetryWaitMax(1*time.Nanosecond),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
err = client.DeleteMessage(ctx, server.URL, token, runnerScaleSetMessage.MessageId)
|
err = client.DeleteMessage(ctx, server.URL, token, runnerScaleSetMessage.MessageID)
|
||||||
assert.NotNil(t, err)
|
assert.NotNil(t, err)
|
||||||
expectedRetry := retryMax + 1
|
expectedRetry := retryMax + 1
|
||||||
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("No message found", func(t *testing.T) {
|
t.Run("No message found", func(t *testing.T) {
|
||||||
want := (*scaleset.RunnerScaleSetMessage)(nil)
|
want := (*RunnerScaleSetMessage)(nil)
|
||||||
rsl, err := json.Marshal(want)
|
rsl, err := json.Marshal(want)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -238,11 +237,11 @@ func TestDeleteMessage(t *testing.T) {
|
|||||||
w.Write(rsl)
|
w.Write(rsl)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
err = client.DeleteMessage(ctx, server.URL, token, runnerScaleSetMessage.MessageId+1)
|
err = client.DeleteMessage(ctx, server.URL, token, runnerScaleSetMessage.MessageID+1)
|
||||||
var expectedErr *scaleset.ActionsError
|
var expectedErr *ActionsError
|
||||||
require.True(t, errors.As(err, &expectedErr))
|
require.True(t, errors.As(err, &expectedErr))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -7,7 +7,6 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
@@ -17,26 +16,26 @@ const exampleRequestID = "5ddf2050-dae0-013c-9159-04421ad31b68"
|
|||||||
|
|
||||||
func TestCreateMessageSession(t *testing.T) {
|
func TestCreateMessageSession(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run("CreateMessageSession unmarshals correctly", func(t *testing.T) {
|
t.Run("CreateMessageSession unmarshals correctly", func(t *testing.T) {
|
||||||
owner := "foo"
|
owner := "foo"
|
||||||
runnerScaleSet := scaleset.RunnerScaleSet{
|
runnerScaleSet := RunnerScaleSet{
|
||||||
Id: 1,
|
ID: 1,
|
||||||
Name: "ScaleSet",
|
Name: "ScaleSet",
|
||||||
CreatedOn: time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC),
|
CreatedOn: time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC),
|
||||||
RunnerSetting: scaleset.RunnerSetting{},
|
RunnerSetting: RunnerSetting{},
|
||||||
}
|
}
|
||||||
|
|
||||||
want := &scaleset.RunnerScaleSetSession{
|
want := &RunnerScaleSetSession{
|
||||||
OwnerName: "foo",
|
OwnerName: "foo",
|
||||||
RunnerScaleSet: &scaleset.RunnerScaleSet{
|
RunnerScaleSet: &RunnerScaleSet{
|
||||||
Id: 1,
|
ID: 1,
|
||||||
Name: "ScaleSet",
|
Name: "ScaleSet",
|
||||||
},
|
},
|
||||||
MessageQueueUrl: "http://fake.scaleset.github.com/123",
|
MessageQueueURL: "http://fake.github.com/123",
|
||||||
MessageQueueAccessToken: "fake.jwt.here",
|
MessageQueueAccessToken: "fake.jwt.here",
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,33 +46,33 @@ func TestCreateMessageSession(t *testing.T) {
|
|||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "ScaleSet"
|
"name": "ScaleSet"
|
||||||
},
|
},
|
||||||
"messageQueueUrl": "http://fake.scaleset.github.com/123",
|
"messageQueueUrl": "http://fake.github.com/123",
|
||||||
"messageQueueAccessToken": "fake.jwt.here"
|
"messageQueueAccessToken": "fake.jwt.here"
|
||||||
}`)
|
}`)
|
||||||
w.Write(resp)
|
w.Write(resp)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.CreateMessageSession(ctx, runnerScaleSet.Id, owner)
|
got, err := client.CreateMessageSession(ctx, runnerScaleSet.ID, owner)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, want, got)
|
assert.Equal(t, want, got)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("CreateMessageSession unmarshals errors into ActionsError", func(t *testing.T) {
|
t.Run("CreateMessageSession unmarshals errors into ActionsError", func(t *testing.T) {
|
||||||
owner := "foo"
|
owner := "foo"
|
||||||
runnerScaleSet := scaleset.RunnerScaleSet{
|
runnerScaleSet := RunnerScaleSet{
|
||||||
Id: 1,
|
ID: 1,
|
||||||
Name: "ScaleSet",
|
Name: "ScaleSet",
|
||||||
CreatedOn: time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC),
|
CreatedOn: time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC),
|
||||||
RunnerSetting: scaleset.RunnerSetting{},
|
RunnerSetting: RunnerSetting{},
|
||||||
}
|
}
|
||||||
|
|
||||||
want := &scaleset.ActionsError{
|
want := &ActionsError{
|
||||||
ActivityID: exampleRequestID,
|
ActivityID: exampleRequestID,
|
||||||
StatusCode: http.StatusBadRequest,
|
StatusCode: http.StatusBadRequest,
|
||||||
Err: &scaleset.ActionsExceptionError{
|
Err: &ActionsExceptionError{
|
||||||
ExceptionName: "CSharpExceptionNameHere",
|
ExceptionName: "CSharpExceptionNameHere",
|
||||||
Message: "could not do something",
|
Message: "could not do something",
|
||||||
},
|
},
|
||||||
@@ -81,19 +80,19 @@ func TestCreateMessageSession(t *testing.T) {
|
|||||||
|
|
||||||
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
w.Header().Set(scaleset.HeaderActionsActivityID, exampleRequestID)
|
w.Header().Set(headerActionsActivityID, exampleRequestID)
|
||||||
w.WriteHeader(http.StatusBadRequest)
|
w.WriteHeader(http.StatusBadRequest)
|
||||||
resp := []byte(`{"typeName": "CSharpExceptionNameHere","message": "could not do something"}`)
|
resp := []byte(`{"typeName": "CSharpExceptionNameHere","message": "could not do something"}`)
|
||||||
w.Write(resp)
|
w.Write(resp)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.CreateMessageSession(ctx, runnerScaleSet.Id, owner)
|
_, err = client.CreateMessageSession(ctx, runnerScaleSet.ID, owner)
|
||||||
require.NotNil(t, err)
|
require.NotNil(t, err)
|
||||||
|
|
||||||
errorTypeForComparison := &scaleset.ActionsError{}
|
errorTypeForComparison := &ActionsError{}
|
||||||
assert.True(
|
assert.True(
|
||||||
t,
|
t,
|
||||||
errors.As(err, &errorTypeForComparison),
|
errors.As(err, &errorTypeForComparison),
|
||||||
@@ -106,11 +105,11 @@ func TestCreateMessageSession(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("CreateMessageSession call is retried the correct amount of times", func(t *testing.T) {
|
t.Run("CreateMessageSession call is retried the correct amount of times", func(t *testing.T) {
|
||||||
owner := "foo"
|
owner := "foo"
|
||||||
runnerScaleSet := scaleset.RunnerScaleSet{
|
runnerScaleSet := RunnerScaleSet{
|
||||||
Id: 1,
|
ID: 1,
|
||||||
Name: "ScaleSet",
|
Name: "ScaleSet",
|
||||||
CreatedOn: time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC),
|
CreatedOn: time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC),
|
||||||
RunnerSetting: scaleset.RunnerSetting{},
|
RunnerSetting: RunnerSetting{},
|
||||||
}
|
}
|
||||||
|
|
||||||
gotRetries := 0
|
gotRetries := 0
|
||||||
@@ -124,15 +123,15 @@ func TestCreateMessageSession(t *testing.T) {
|
|||||||
|
|
||||||
wantRetries := retryMax + 1
|
wantRetries := retryMax + 1
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(retryMax),
|
WithRetryMax(retryMax),
|
||||||
scaleset.WithRetryWaitMax(retryWaitMax),
|
WithRetryWaitMax(retryWaitMax),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.CreateMessageSession(ctx, runnerScaleSet.Id, owner)
|
_, err = client.CreateMessageSession(ctx, runnerScaleSet.ID, owner)
|
||||||
assert.NotNil(t, err)
|
assert.NotNil(t, err)
|
||||||
assert.Equalf(t, gotRetries, wantRetries, "CreateMessageSession got unexpected retry count: got=%v, want=%v", gotRetries, wantRetries)
|
assert.Equalf(t, gotRetries, wantRetries, "CreateMessageSession got unexpected retry count: got=%v, want=%v", gotRetries, wantRetries)
|
||||||
})
|
})
|
||||||
@@ -140,16 +139,16 @@ func TestCreateMessageSession(t *testing.T) {
|
|||||||
|
|
||||||
func TestDeleteMessageSession(t *testing.T) {
|
func TestDeleteMessageSession(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run("DeleteMessageSession call is retried the correct amount of times", func(t *testing.T) {
|
t.Run("DeleteMessageSession call is retried the correct amount of times", func(t *testing.T) {
|
||||||
runnerScaleSet := scaleset.RunnerScaleSet{
|
runnerScaleSet := RunnerScaleSet{
|
||||||
Id: 1,
|
ID: 1,
|
||||||
Name: "ScaleSet",
|
Name: "ScaleSet",
|
||||||
CreatedOn: time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC),
|
CreatedOn: time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC),
|
||||||
RunnerSetting: scaleset.RunnerSetting{},
|
RunnerSetting: RunnerSetting{},
|
||||||
}
|
}
|
||||||
|
|
||||||
gotRetries := 0
|
gotRetries := 0
|
||||||
@@ -163,33 +162,33 @@ func TestDeleteMessageSession(t *testing.T) {
|
|||||||
|
|
||||||
wantRetries := retryMax + 1
|
wantRetries := retryMax + 1
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(retryMax),
|
WithRetryMax(retryMax),
|
||||||
scaleset.WithRetryWaitMax(retryWaitMax),
|
WithRetryWaitMax(retryWaitMax),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
sessionId := uuid.New()
|
sessionID := uuid.New()
|
||||||
|
|
||||||
err = client.DeleteMessageSession(ctx, runnerScaleSet.Id, &sessionId)
|
err = client.DeleteMessageSession(ctx, runnerScaleSet.ID, sessionID)
|
||||||
assert.NotNil(t, err)
|
assert.NotNil(t, err)
|
||||||
assert.Equalf(t, gotRetries, wantRetries, "CreateMessageSession got unexpected retry count: got=%v, want=%v", gotRetries, wantRetries)
|
assert.Equalf(t, gotRetries, wantRetries, "CreateMessageSession got unexpected retry count: got=%v, want=%v", gotRetries, wantRetries)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRefreshMessageSession(t *testing.T) {
|
func TestRefreshMessageSession(t *testing.T) {
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run("RefreshMessageSession call is retried the correct amount of times", func(t *testing.T) {
|
t.Run("RefreshMessageSession call is retried the correct amount of times", func(t *testing.T) {
|
||||||
runnerScaleSet := scaleset.RunnerScaleSet{
|
runnerScaleSet := RunnerScaleSet{
|
||||||
Id: 1,
|
ID: 1,
|
||||||
Name: "ScaleSet",
|
Name: "ScaleSet",
|
||||||
CreatedOn: time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC),
|
CreatedOn: time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC),
|
||||||
RunnerSetting: scaleset.RunnerSetting{},
|
RunnerSetting: RunnerSetting{},
|
||||||
}
|
}
|
||||||
|
|
||||||
gotRetries := 0
|
gotRetries := 0
|
||||||
@@ -203,17 +202,17 @@ func TestRefreshMessageSession(t *testing.T) {
|
|||||||
|
|
||||||
wantRetries := retryMax + 1
|
wantRetries := retryMax + 1
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(retryMax),
|
WithRetryMax(retryMax),
|
||||||
scaleset.WithRetryWaitMax(retryWaitMax),
|
WithRetryWaitMax(retryWaitMax),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
sessionId := uuid.New()
|
sessionID := uuid.New()
|
||||||
|
|
||||||
_, err = client.RefreshMessageSession(context.Background(), runnerScaleSet.Id, &sessionId)
|
_, err = client.RefreshMessageSession(context.Background(), runnerScaleSet.ID, sessionID)
|
||||||
assert.NotNil(t, err)
|
assert.NotNil(t, err)
|
||||||
assert.Equalf(t, gotRetries, wantRetries, "CreateMessageSession got unexpected retry count: got=%v, want=%v", gotRetries, wantRetries)
|
assert.Equalf(t, gotRetries, wantRetries, "CreateMessageSession got unexpected retry count: got=%v, want=%v", gotRetries, wantRetries)
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -10,7 +10,6 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
@@ -18,12 +17,12 @@ import (
|
|||||||
|
|
||||||
func TestGetRunnerScaleSet(t *testing.T) {
|
func TestGetRunnerScaleSet(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
scaleSetName := "ScaleSet"
|
scaleSetName := "ScaleSet"
|
||||||
runnerScaleSet := scaleset.RunnerScaleSet{Id: 1, Name: scaleSetName}
|
runnerScaleSet := RunnerScaleSet{ID: 1, Name: scaleSetName}
|
||||||
|
|
||||||
t.Run("Get existing scale set", func(t *testing.T) {
|
t.Run("Get existing scale set", func(t *testing.T) {
|
||||||
want := &runnerScaleSet
|
want := &runnerScaleSet
|
||||||
@@ -32,7 +31,7 @@ func TestGetRunnerScaleSet(t *testing.T) {
|
|||||||
w.Write(runnerScaleSetsResp)
|
w.Write(runnerScaleSetsResp)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
got, err := client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
||||||
@@ -48,7 +47,7 @@ func TestGetRunnerScaleSet(t *testing.T) {
|
|||||||
url = *r.URL
|
url = *r.URL
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
_, err = client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
||||||
@@ -65,7 +64,7 @@ func TestGetRunnerScaleSet(t *testing.T) {
|
|||||||
w.WriteHeader(http.StatusNotFound)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
_, err = client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
||||||
@@ -78,7 +77,7 @@ func TestGetRunnerScaleSet(t *testing.T) {
|
|||||||
w.Header().Set("Content-Type", "text/plain")
|
w.Header().Set("Content-Type", "text/plain")
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
_, err = client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
||||||
@@ -95,11 +94,11 @@ func TestGetRunnerScaleSet(t *testing.T) {
|
|||||||
retryMax := 1
|
retryMax := 1
|
||||||
retryWaitMax := 1 * time.Microsecond
|
retryWaitMax := 1 * time.Microsecond
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(retryMax),
|
WithRetryMax(retryMax),
|
||||||
scaleset.WithRetryWaitMax(retryWaitMax),
|
WithRetryWaitMax(retryWaitMax),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -110,13 +109,13 @@ func TestGetRunnerScaleSet(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("RunnerScaleSet count is zero", func(t *testing.T) {
|
t.Run("RunnerScaleSet count is zero", func(t *testing.T) {
|
||||||
want := (*scaleset.RunnerScaleSet)(nil)
|
want := (*RunnerScaleSet)(nil)
|
||||||
runnerScaleSetsResp := []byte(`{"count":0,"value":[{"id":1,"name":"ScaleSet"}]}`)
|
runnerScaleSetsResp := []byte(`{"count":0,"value":[{"id":1,"name":"ScaleSet"}]}`)
|
||||||
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
||||||
w.Write(runnerScaleSetsResp)
|
w.Write(runnerScaleSetsResp)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
got, err := client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
||||||
@@ -126,18 +125,18 @@ func TestGetRunnerScaleSet(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("Multiple runner scale sets found", func(t *testing.T) {
|
t.Run("Multiple runner scale sets found", func(t *testing.T) {
|
||||||
reqID := uuid.NewString()
|
reqID := uuid.NewString()
|
||||||
wantErr := &scaleset.ActionsError{
|
wantErr := &ActionsError{
|
||||||
StatusCode: http.StatusOK,
|
StatusCode: http.StatusOK,
|
||||||
ActivityID: reqID,
|
ActivityID: reqID,
|
||||||
Err: fmt.Errorf("multiple runner scale sets found with name %q", scaleSetName),
|
Err: fmt.Errorf("multiple runner scale sets found with name %q", scaleSetName),
|
||||||
}
|
}
|
||||||
runnerScaleSetsResp := []byte(`{"count":2,"value":[{"id":1,"name":"ScaleSet"}]}`)
|
runnerScaleSetsResp := []byte(`{"count":2,"value":[{"id":1,"name":"ScaleSet"}]}`)
|
||||||
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
||||||
w.Header().Set(scaleset.HeaderActionsActivityID, reqID)
|
w.Header().Set(headerActionsActivityID, reqID)
|
||||||
w.Write(runnerScaleSetsResp)
|
w.Write(runnerScaleSetsResp)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
_, err = client.GetRunnerScaleSet(ctx, 1, scaleSetName)
|
||||||
@@ -146,14 +145,14 @@ func TestGetRunnerScaleSet(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetRunnerScaleSetById(t *testing.T) {
|
func TestGetRunnerScaleSetByID(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
scaleSetCreationDateTime := time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC)
|
scaleSetCreationDateTime := time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC)
|
||||||
runnerScaleSet := scaleset.RunnerScaleSet{Id: 1, Name: "ScaleSet", CreatedOn: scaleSetCreationDateTime, RunnerSetting: scaleset.RunnerSetting{}}
|
runnerScaleSet := RunnerScaleSet{ID: 1, Name: "ScaleSet", CreatedOn: scaleSetCreationDateTime, RunnerSetting: RunnerSetting{}}
|
||||||
|
|
||||||
t.Run("Get existing scale set by Id", func(t *testing.T) {
|
t.Run("Get existing scale set by Id", func(t *testing.T) {
|
||||||
want := &runnerScaleSet
|
want := &runnerScaleSet
|
||||||
@@ -163,15 +162,15 @@ func TestGetRunnerScaleSetById(t *testing.T) {
|
|||||||
w.Write(rsl)
|
w.Write(rsl)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(sservere.configURLForOrg("my-org"), auth)
|
client, err := NewClient(sservere.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetRunnerScaleSetById(ctx, runnerScaleSet.Id)
|
got, err := client.GetRunnerScaleSetByID(ctx, runnerScaleSet.ID)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, want, got)
|
assert.Equal(t, want, got)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("GetRunnerScaleSetById calls correct url", func(t *testing.T) {
|
t.Run("GetRunnerScaleSetByID calls correct url", func(t *testing.T) {
|
||||||
rsl, err := json.Marshal(&runnerScaleSet)
|
rsl, err := json.Marshal(&runnerScaleSet)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -181,13 +180,13 @@ func TestGetRunnerScaleSetById(t *testing.T) {
|
|||||||
url = *r.URL
|
url = *r.URL
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetRunnerScaleSetById(ctx, runnerScaleSet.Id)
|
_, err = client.GetRunnerScaleSetByID(ctx, runnerScaleSet.ID)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
expectedPath := fmt.Sprintf("/tenant/123/_apis/runtime/runnerscalesets/%d", runnerScaleSet.Id)
|
expectedPath := fmt.Sprintf("/tenant/123/_apis/runtime/runnerscalesets/%d", runnerScaleSet.ID)
|
||||||
assert.Equal(t, expectedPath, url.Path)
|
assert.Equal(t, expectedPath, url.Path)
|
||||||
assert.Equal(t, "6.0-preview", url.Query().Get("api-version"))
|
assert.Equal(t, "6.0-preview", url.Query().Get("api-version"))
|
||||||
})
|
})
|
||||||
@@ -197,10 +196,10 @@ func TestGetRunnerScaleSetById(t *testing.T) {
|
|||||||
w.WriteHeader(http.StatusNotFound)
|
w.WriteHeader(http.StatusNotFound)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetRunnerScaleSetById(ctx, runnerScaleSet.Id)
|
_, err = client.GetRunnerScaleSetByID(ctx, runnerScaleSet.ID)
|
||||||
assert.NotNil(t, err)
|
assert.NotNil(t, err)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -210,10 +209,10 @@ func TestGetRunnerScaleSetById(t *testing.T) {
|
|||||||
w.Header().Set("Content-Type", "text/plain")
|
w.Header().Set("Content-Type", "text/plain")
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetRunnerScaleSetById(ctx, runnerScaleSet.Id)
|
_, err = client.GetRunnerScaleSetByID(ctx, runnerScaleSet.ID)
|
||||||
assert.NotNil(t, err)
|
assert.NotNil(t, err)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -226,32 +225,32 @@ func TestGetRunnerScaleSetById(t *testing.T) {
|
|||||||
|
|
||||||
retryMax := 1
|
retryMax := 1
|
||||||
retryWaitMax := 1 * time.Microsecond
|
retryWaitMax := 1 * time.Microsecond
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(retryMax),
|
WithRetryMax(retryMax),
|
||||||
scaleset.WithRetryWaitMax(retryWaitMax),
|
WithRetryWaitMax(retryWaitMax),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetRunnerScaleSetById(ctx, runnerScaleSet.Id)
|
_, err = client.GetRunnerScaleSetByID(ctx, runnerScaleSet.ID)
|
||||||
require.NotNil(t, err)
|
require.NotNil(t, err)
|
||||||
expectedRetry := retryMax + 1
|
expectedRetry := retryMax + 1
|
||||||
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("No RunnerScaleSet found", func(t *testing.T) {
|
t.Run("No RunnerScaleSet found", func(t *testing.T) {
|
||||||
want := (*scaleset.RunnerScaleSet)(nil)
|
want := (*RunnerScaleSet)(nil)
|
||||||
rsl, err := json.Marshal(want)
|
rsl, err := json.Marshal(want)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
server := newActionsServer(t, http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
||||||
w.Write(rsl)
|
w.Write(rsl)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetRunnerScaleSetById(ctx, runnerScaleSet.Id)
|
got, err := client.GetRunnerScaleSetByID(ctx, runnerScaleSet.ID)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, want, got)
|
assert.Equal(t, want, got)
|
||||||
})
|
})
|
||||||
@@ -259,12 +258,12 @@ func TestGetRunnerScaleSetById(t *testing.T) {
|
|||||||
|
|
||||||
func TestCreateRunnerScaleSet(t *testing.T) {
|
func TestCreateRunnerScaleSet(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
scaleSetCreationDateTime := time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC)
|
scaleSetCreationDateTime := time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC)
|
||||||
runnerScaleSet := scaleset.RunnerScaleSet{Id: 1, Name: "ScaleSet", CreatedOn: scaleSetCreationDateTime, RunnerSetting: scaleset.RunnerSetting{}}
|
runnerScaleSet := RunnerScaleSet{ID: 1, Name: "ScaleSet", CreatedOn: scaleSetCreationDateTime, RunnerSetting: RunnerSetting{}}
|
||||||
|
|
||||||
t.Run("Create runner scale set", func(t *testing.T) {
|
t.Run("Create runner scale set", func(t *testing.T) {
|
||||||
want := &runnerScaleSet
|
want := &runnerScaleSet
|
||||||
@@ -274,7 +273,7 @@ func TestCreateRunnerScaleSet(t *testing.T) {
|
|||||||
w.Write(rsl)
|
w.Write(rsl)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.CreateRunnerScaleSet(ctx, &runnerScaleSet)
|
got, err := client.CreateRunnerScaleSet(ctx, &runnerScaleSet)
|
||||||
@@ -291,7 +290,7 @@ func TestCreateRunnerScaleSet(t *testing.T) {
|
|||||||
url = *r.URL
|
url = *r.URL
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.CreateRunnerScaleSet(ctx, &runnerScaleSet)
|
_, err = client.CreateRunnerScaleSet(ctx, &runnerScaleSet)
|
||||||
@@ -308,12 +307,12 @@ func TestCreateRunnerScaleSet(t *testing.T) {
|
|||||||
w.Header().Set("Content-Type", "text/plain")
|
w.Header().Set("Content-Type", "text/plain")
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.CreateRunnerScaleSet(ctx, &runnerScaleSet)
|
_, err = client.CreateRunnerScaleSet(ctx, &runnerScaleSet)
|
||||||
require.NotNil(t, err)
|
require.NotNil(t, err)
|
||||||
var expectedErr *scaleset.ActionsError
|
var expectedErr *ActionsError
|
||||||
assert.True(t, errors.As(err, &expectedErr))
|
assert.True(t, errors.As(err, &expectedErr))
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -327,11 +326,11 @@ func TestCreateRunnerScaleSet(t *testing.T) {
|
|||||||
retryMax := 1
|
retryMax := 1
|
||||||
retryWaitMax := 1 * time.Microsecond
|
retryWaitMax := 1 * time.Microsecond
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(retryMax),
|
WithRetryMax(retryMax),
|
||||||
scaleset.WithRetryWaitMax(retryWaitMax),
|
WithRetryWaitMax(retryWaitMax),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -344,12 +343,12 @@ func TestCreateRunnerScaleSet(t *testing.T) {
|
|||||||
|
|
||||||
func TestUpdateRunnerScaleSet(t *testing.T) {
|
func TestUpdateRunnerScaleSet(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
scaleSetCreationDateTime := time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC)
|
scaleSetCreationDateTime := time.Date(1, time.January, 1, 0, 0, 0, 0, time.UTC)
|
||||||
runnerScaleSet := scaleset.RunnerScaleSet{Id: 1, Name: "ScaleSet", RunnerGroupId: 1, RunnerGroupName: "group", CreatedOn: scaleSetCreationDateTime, RunnerSetting: scaleset.RunnerSetting{}}
|
runnerScaleSet := RunnerScaleSet{ID: 1, Name: "ScaleSet", RunnerGroupID: 1, RunnerGroupName: "group", CreatedOn: scaleSetCreationDateTime, RunnerSetting: RunnerSetting{}}
|
||||||
|
|
||||||
t.Run("Update runner scale set", func(t *testing.T) {
|
t.Run("Update runner scale set", func(t *testing.T) {
|
||||||
want := &runnerScaleSet
|
want := &runnerScaleSet
|
||||||
@@ -359,10 +358,10 @@ func TestUpdateRunnerScaleSet(t *testing.T) {
|
|||||||
w.Write(rsl)
|
w.Write(rsl)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.UpdateRunnerScaleSet(ctx, 1, &scaleset.RunnerScaleSet{RunnerGroupId: 1})
|
got, err := client.UpdateRunnerScaleSet(ctx, 1, &RunnerScaleSet{RunnerGroupID: 1})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, want, got)
|
assert.Equal(t, want, got)
|
||||||
})
|
})
|
||||||
@@ -379,7 +378,7 @@ func TestUpdateRunnerScaleSet(t *testing.T) {
|
|||||||
w.Write(rsl)
|
w.Write(rsl)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.UpdateRunnerScaleSet(ctx, 1, &runnerScaleSet)
|
_, err = client.UpdateRunnerScaleSet(ctx, 1, &runnerScaleSet)
|
||||||
@@ -389,7 +388,7 @@ func TestUpdateRunnerScaleSet(t *testing.T) {
|
|||||||
|
|
||||||
func TestDeleteRunnerScaleSet(t *testing.T) {
|
func TestDeleteRunnerScaleSet(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -400,7 +399,7 @@ func TestDeleteRunnerScaleSet(t *testing.T) {
|
|||||||
w.WriteHeader(http.StatusNoContent)
|
w.WriteHeader(http.StatusNoContent)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
err = client.DeleteRunnerScaleSet(ctx, 10)
|
err = client.DeleteRunnerScaleSet(ctx, 10)
|
||||||
@@ -415,7 +414,7 @@ func TestDeleteRunnerScaleSet(t *testing.T) {
|
|||||||
w.Write([]byte(`{"message": "test error"}`))
|
w.Write([]byte(`{"message": "test error"}`))
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
err = client.DeleteRunnerScaleSet(ctx, 10)
|
err = client.DeleteRunnerScaleSet(ctx, 10)
|
||||||
|
|||||||
+21
-22
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -6,21 +6,20 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetRunner(t *testing.T) {
|
func TestGetRunner(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run("Get Runner", func(t *testing.T) {
|
t.Run("Get Runner", func(t *testing.T) {
|
||||||
var runnerID int64 = 1
|
var runnerID int64 = 1
|
||||||
want := &scaleset.RunnerReference{
|
want := &RunnerReference{
|
||||||
Id: int(runnerID),
|
ID: int(runnerID),
|
||||||
Name: "self-hosted-ubuntu",
|
Name: "self-hosted-ubuntu",
|
||||||
}
|
}
|
||||||
response := []byte(`{"id": 1, "name": "self-hosted-ubuntu"}`)
|
response := []byte(`{"id": 1, "name": "self-hosted-ubuntu"}`)
|
||||||
@@ -29,7 +28,7 @@ func TestGetRunner(t *testing.T) {
|
|||||||
w.Write(response)
|
w.Write(response)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetRunner(ctx, runnerID)
|
got, err := client.GetRunner(ctx, runnerID)
|
||||||
@@ -50,7 +49,7 @@ func TestGetRunner(t *testing.T) {
|
|||||||
actualRetry++
|
actualRetry++
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth, scaleset.WithRetryMax(retryMax), scaleset.WithRetryWaitMax(retryWaitMax))
|
client, err := NewClient(server.configURLForOrg("my-org"), auth, WithRetryMax(retryMax), WithRetryWaitMax(retryWaitMax))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetRunner(ctx, runnerID)
|
_, err = client.GetRunner(ctx, runnerID)
|
||||||
@@ -61,15 +60,15 @@ func TestGetRunner(t *testing.T) {
|
|||||||
|
|
||||||
func TestGetRunnerByName(t *testing.T) {
|
func TestGetRunnerByName(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run("Get Runner by Name", func(t *testing.T) {
|
t.Run("Get Runner by Name", func(t *testing.T) {
|
||||||
var runnerID int64 = 1
|
var runnerID int64 = 1
|
||||||
var runnerName = "self-hosted-ubuntu"
|
var runnerName = "self-hosted-ubuntu"
|
||||||
want := &scaleset.RunnerReference{
|
want := &RunnerReference{
|
||||||
Id: int(runnerID),
|
ID: int(runnerID),
|
||||||
Name: runnerName,
|
Name: runnerName,
|
||||||
}
|
}
|
||||||
response := []byte(`{"count": 1, "value": [{"id": 1, "name": "self-hosted-ubuntu"}]}`)
|
response := []byte(`{"count": 1, "value": [{"id": 1, "name": "self-hosted-ubuntu"}]}`)
|
||||||
@@ -78,7 +77,7 @@ func TestGetRunnerByName(t *testing.T) {
|
|||||||
w.Write(response)
|
w.Write(response)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetRunnerByName(ctx, runnerName)
|
got, err := client.GetRunnerByName(ctx, runnerName)
|
||||||
@@ -94,7 +93,7 @@ func TestGetRunnerByName(t *testing.T) {
|
|||||||
w.Write(response)
|
w.Write(response)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetRunnerByName(ctx, runnerName)
|
got, err := client.GetRunnerByName(ctx, runnerName)
|
||||||
@@ -116,7 +115,7 @@ func TestGetRunnerByName(t *testing.T) {
|
|||||||
actualRetry++
|
actualRetry++
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth, scaleset.WithRetryMax(retryMax), scaleset.WithRetryWaitMax(retryWaitMax))
|
client, err := NewClient(server.configURLForOrg("my-org"), auth, WithRetryMax(retryMax), WithRetryWaitMax(retryWaitMax))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = client.GetRunnerByName(ctx, runnerName)
|
_, err = client.GetRunnerByName(ctx, runnerName)
|
||||||
@@ -127,7 +126,7 @@ func TestGetRunnerByName(t *testing.T) {
|
|||||||
|
|
||||||
func TestDeleteRunner(t *testing.T) {
|
func TestDeleteRunner(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,7 +137,7 @@ func TestDeleteRunner(t *testing.T) {
|
|||||||
w.WriteHeader(http.StatusNoContent)
|
w.WriteHeader(http.StatusNoContent)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
err = client.RemoveRunner(ctx, runnerID)
|
err = client.RemoveRunner(ctx, runnerID)
|
||||||
@@ -159,11 +158,11 @@ func TestDeleteRunner(t *testing.T) {
|
|||||||
actualRetry++
|
actualRetry++
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
server.configURLForOrg("my-org"),
|
server.configURLForOrg("my-org"),
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRetryMax(retryMax),
|
WithRetryMax(retryMax),
|
||||||
scaleset.WithRetryWaitMax(retryWaitMax),
|
WithRetryWaitMax(retryWaitMax),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@@ -175,14 +174,14 @@ func TestDeleteRunner(t *testing.T) {
|
|||||||
|
|
||||||
func TestGetRunnerGroupByName(t *testing.T) {
|
func TestGetRunnerGroupByName(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run("Get RunnerGroup by Name", func(t *testing.T) {
|
t.Run("Get RunnerGroup by Name", func(t *testing.T) {
|
||||||
var runnerGroupID int64 = 1
|
var runnerGroupID int64 = 1
|
||||||
var runnerGroupName = "test-runner-group"
|
var runnerGroupName = "test-runner-group"
|
||||||
want := &scaleset.RunnerGroup{
|
want := &RunnerGroup{
|
||||||
ID: runnerGroupID,
|
ID: runnerGroupID,
|
||||||
Name: runnerGroupName,
|
Name: runnerGroupName,
|
||||||
}
|
}
|
||||||
@@ -192,7 +191,7 @@ func TestGetRunnerGroupByName(t *testing.T) {
|
|||||||
w.Write(response)
|
w.Write(response)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetRunnerGroupByName(ctx, runnerGroupName)
|
got, err := client.GetRunnerGroupByName(ctx, runnerGroupName)
|
||||||
@@ -208,7 +207,7 @@ func TestGetRunnerGroupByName(t *testing.T) {
|
|||||||
w.Write(response)
|
w.Write(response)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.configURLForOrg("my-org"), auth)
|
client, err := NewClient(server.configURLForOrg("my-org"), auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
got, err := client.GetRunnerGroupByName(ctx, runnerGroupName)
|
got, err := client.GetRunnerGroupByName(ctx, runnerGroupName)
|
||||||
|
|||||||
+12
-13
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -14,7 +14,6 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/golang-jwt/jwt/v4"
|
"github.com/golang-jwt/jwt/v4"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
@@ -62,10 +61,10 @@ func TestServerWithSelfSignedCertificates(t *testing.T) {
|
|||||||
u = server.URL
|
u = server.URL
|
||||||
configURL := server.URL + "/my-org"
|
configURL := server.URL + "/my-org"
|
||||||
|
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
client, err := scaleset.NewClient(configURL, auth)
|
client, err := NewClient(configURL, auth)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotNil(t, client)
|
require.NotNil(t, client)
|
||||||
|
|
||||||
@@ -93,7 +92,7 @@ func TestServerWithSelfSignedCertificates(t *testing.T) {
|
|||||||
u = server.URL
|
u = server.URL
|
||||||
configURL := server.URL + "/my-org"
|
configURL := server.URL + "/my-org"
|
||||||
|
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,10 +102,10 @@ func TestServerWithSelfSignedCertificates(t *testing.T) {
|
|||||||
pool := x509.NewCertPool()
|
pool := x509.NewCertPool()
|
||||||
require.True(t, pool.AppendCertsFromPEM(cert))
|
require.True(t, pool.AppendCertsFromPEM(cert))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
configURL,
|
configURL,
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRootCAs(pool),
|
WithRootCAs(pool),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.NotNil(t, client)
|
assert.NotNil(t, client)
|
||||||
@@ -125,7 +124,7 @@ func TestServerWithSelfSignedCertificates(t *testing.T) {
|
|||||||
u = server.URL
|
u = server.URL
|
||||||
configURL := server.URL + "/my-org"
|
configURL := server.URL + "/my-org"
|
||||||
|
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,11 +134,11 @@ func TestServerWithSelfSignedCertificates(t *testing.T) {
|
|||||||
pool := x509.NewCertPool()
|
pool := x509.NewCertPool()
|
||||||
require.True(t, pool.AppendCertsFromPEM(cert))
|
require.True(t, pool.AppendCertsFromPEM(cert))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(
|
client, err := NewClient(
|
||||||
configURL,
|
configURL,
|
||||||
auth,
|
auth,
|
||||||
scaleset.WithRootCAs(pool),
|
WithRootCAs(pool),
|
||||||
scaleset.WithRetryMax(0),
|
WithRetryMax(0),
|
||||||
)
|
)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotNil(t, client)
|
require.NotNil(t, client)
|
||||||
@@ -152,11 +151,11 @@ func TestServerWithSelfSignedCertificates(t *testing.T) {
|
|||||||
server := startNewTLSTestServer(t, certPath, keyPath, http.HandlerFunc(h))
|
server := startNewTLSTestServer(t, certPath, keyPath, http.HandlerFunc(h))
|
||||||
configURL := server.URL + "/my-org"
|
configURL := server.URL + "/my-org"
|
||||||
|
|
||||||
auth := &scaleset.ActionsAuth{
|
auth := &ActionsAuth{
|
||||||
Token: "token",
|
Token: "token",
|
||||||
}
|
}
|
||||||
|
|
||||||
client, err := scaleset.NewClient(configURL, auth, scaleset.WithoutTLSVerify())
|
client, err := NewClient(configURL, auth, WithoutTLSVerify())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.NotNil(t, client)
|
assert.NotNil(t, client)
|
||||||
})
|
})
|
||||||
|
|||||||
+31
-32
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
@@ -7,7 +7,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
@@ -16,12 +15,12 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
t.Run("when given a valid URL", func(t *testing.T) {
|
t.Run("when given a valid URL", func(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
configURL string
|
configURL string
|
||||||
expected *scaleset.GitHubConfig
|
expected *GitHubConfig
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
configURL: "https://github.com/org/repo",
|
configURL: "https://github.com/org/repo",
|
||||||
expected: &scaleset.GitHubConfig{
|
expected: &GitHubConfig{
|
||||||
Scope: scaleset.GitHubScopeRepository,
|
Scope: GitHubScopeRepository,
|
||||||
Enterprise: "",
|
Enterprise: "",
|
||||||
Organization: "org",
|
Organization: "org",
|
||||||
Repository: "repo",
|
Repository: "repo",
|
||||||
@@ -30,8 +29,8 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://github.com/org/repo/",
|
configURL: "https://github.com/org/repo/",
|
||||||
expected: &scaleset.GitHubConfig{
|
expected: &GitHubConfig{
|
||||||
Scope: scaleset.GitHubScopeRepository,
|
Scope: GitHubScopeRepository,
|
||||||
Enterprise: "",
|
Enterprise: "",
|
||||||
Organization: "org",
|
Organization: "org",
|
||||||
Repository: "repo",
|
Repository: "repo",
|
||||||
@@ -40,8 +39,8 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://github.com/org",
|
configURL: "https://github.com/org",
|
||||||
expected: &scaleset.GitHubConfig{
|
expected: &GitHubConfig{
|
||||||
Scope: scaleset.GitHubScopeOrganization,
|
Scope: GitHubScopeOrganization,
|
||||||
Enterprise: "",
|
Enterprise: "",
|
||||||
Organization: "org",
|
Organization: "org",
|
||||||
Repository: "",
|
Repository: "",
|
||||||
@@ -50,8 +49,8 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://github.com/enterprises/my-enterprise",
|
configURL: "https://github.com/enterprises/my-enterprise",
|
||||||
expected: &scaleset.GitHubConfig{
|
expected: &GitHubConfig{
|
||||||
Scope: scaleset.GitHubScopeEnterprise,
|
Scope: GitHubScopeEnterprise,
|
||||||
Enterprise: "my-enterprise",
|
Enterprise: "my-enterprise",
|
||||||
Organization: "",
|
Organization: "",
|
||||||
Repository: "",
|
Repository: "",
|
||||||
@@ -60,8 +59,8 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://github.com/enterprises/my-enterprise/",
|
configURL: "https://github.com/enterprises/my-enterprise/",
|
||||||
expected: &scaleset.GitHubConfig{
|
expected: &GitHubConfig{
|
||||||
Scope: scaleset.GitHubScopeEnterprise,
|
Scope: GitHubScopeEnterprise,
|
||||||
Enterprise: "my-enterprise",
|
Enterprise: "my-enterprise",
|
||||||
Organization: "",
|
Organization: "",
|
||||||
Repository: "",
|
Repository: "",
|
||||||
@@ -70,8 +69,8 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://www.github.com/org",
|
configURL: "https://www.github.com/org",
|
||||||
expected: &scaleset.GitHubConfig{
|
expected: &GitHubConfig{
|
||||||
Scope: scaleset.GitHubScopeOrganization,
|
Scope: GitHubScopeOrganization,
|
||||||
Enterprise: "",
|
Enterprise: "",
|
||||||
Organization: "org",
|
Organization: "org",
|
||||||
Repository: "",
|
Repository: "",
|
||||||
@@ -80,8 +79,8 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://www.github.com/org/",
|
configURL: "https://www.github.com/org/",
|
||||||
expected: &scaleset.GitHubConfig{
|
expected: &GitHubConfig{
|
||||||
Scope: scaleset.GitHubScopeOrganization,
|
Scope: GitHubScopeOrganization,
|
||||||
Enterprise: "",
|
Enterprise: "",
|
||||||
Organization: "org",
|
Organization: "org",
|
||||||
Repository: "",
|
Repository: "",
|
||||||
@@ -90,8 +89,8 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://github.localhost/org",
|
configURL: "https://github.localhost/org",
|
||||||
expected: &scaleset.GitHubConfig{
|
expected: &GitHubConfig{
|
||||||
Scope: scaleset.GitHubScopeOrganization,
|
Scope: GitHubScopeOrganization,
|
||||||
Enterprise: "",
|
Enterprise: "",
|
||||||
Organization: "org",
|
Organization: "org",
|
||||||
Repository: "",
|
Repository: "",
|
||||||
@@ -100,8 +99,8 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://my-ghes.com/org",
|
configURL: "https://my-ghes.com/org",
|
||||||
expected: &scaleset.GitHubConfig{
|
expected: &GitHubConfig{
|
||||||
Scope: scaleset.GitHubScopeOrganization,
|
Scope: GitHubScopeOrganization,
|
||||||
Enterprise: "",
|
Enterprise: "",
|
||||||
Organization: "org",
|
Organization: "org",
|
||||||
Repository: "",
|
Repository: "",
|
||||||
@@ -110,8 +109,8 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://my-ghes.com/org/",
|
configURL: "https://my-ghes.com/org/",
|
||||||
expected: &scaleset.GitHubConfig{
|
expected: &GitHubConfig{
|
||||||
Scope: scaleset.GitHubScopeOrganization,
|
Scope: GitHubScopeOrganization,
|
||||||
Enterprise: "",
|
Enterprise: "",
|
||||||
Organization: "org",
|
Organization: "org",
|
||||||
Repository: "",
|
Repository: "",
|
||||||
@@ -120,8 +119,8 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
configURL: "https://my-ghes.ghe.com/org/",
|
configURL: "https://my-ghes.ghe.com/org/",
|
||||||
expected: &scaleset.GitHubConfig{
|
expected: &GitHubConfig{
|
||||||
Scope: scaleset.GitHubScopeOrganization,
|
Scope: GitHubScopeOrganization,
|
||||||
Enterprise: "",
|
Enterprise: "",
|
||||||
Organization: "org",
|
Organization: "org",
|
||||||
Repository: "",
|
Repository: "",
|
||||||
@@ -136,7 +135,7 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
test.expected.ConfigURL = parsedURL
|
test.expected.ConfigURL = parsedURL
|
||||||
|
|
||||||
cfg, err := scaleset.ParseGitHubConfigFromURL(test.configURL)
|
cfg, err := ParseGitHubConfigFromURL(test.configURL)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, test.expected, cfg)
|
assert.Equal(t, test.expected, cfg)
|
||||||
})
|
})
|
||||||
@@ -151,16 +150,16 @@ func TestGitHubConfig(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, u := range invalidURLs {
|
for _, u := range invalidURLs {
|
||||||
_, err := scaleset.ParseGitHubConfigFromURL(u)
|
_, err := ParseGitHubConfigFromURL(u)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.True(t, errors.Is(err, scaleset.ErrInvalidGitHubConfigURL))
|
assert.True(t, errors.Is(err, ErrInvalidGitHubConfigURL))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGitHubConfig_GitHubAPIURL(t *testing.T) {
|
func TestGitHubConfig_GitHubAPIURL(t *testing.T) {
|
||||||
t.Run("when hosted", func(t *testing.T) {
|
t.Run("when hosted", func(t *testing.T) {
|
||||||
config, err := scaleset.ParseGitHubConfigFromURL("https://github.com/org/repo")
|
config, err := ParseGitHubConfigFromURL("https://github.com/org/repo")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.True(t, config.IsHosted)
|
assert.True(t, config.IsHosted)
|
||||||
|
|
||||||
@@ -168,7 +167,7 @@ func TestGitHubConfig_GitHubAPIURL(t *testing.T) {
|
|||||||
assert.Equal(t, "https://api.github.com/some/path", result.String())
|
assert.Equal(t, "https://api.github.com/some/path", result.String())
|
||||||
})
|
})
|
||||||
t.Run("when hosted with ghe.com", func(t *testing.T) {
|
t.Run("when hosted with ghe.com", func(t *testing.T) {
|
||||||
config, err := scaleset.ParseGitHubConfigFromURL("https://github.ghe.com/org/repo")
|
config, err := ParseGitHubConfigFromURL("https://github.ghe.com/org/repo")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.True(t, config.IsHosted)
|
assert.True(t, config.IsHosted)
|
||||||
|
|
||||||
@@ -176,7 +175,7 @@ func TestGitHubConfig_GitHubAPIURL(t *testing.T) {
|
|||||||
assert.Equal(t, "https://api.github.ghe.com/some/path", result.String())
|
assert.Equal(t, "https://api.github.ghe.com/some/path", result.String())
|
||||||
})
|
})
|
||||||
t.Run("when not hosted", func(t *testing.T) {
|
t.Run("when not hosted", func(t *testing.T) {
|
||||||
config, err := scaleset.ParseGitHubConfigFromURL("https://ghes.com/org/repo")
|
config, err := ParseGitHubConfigFromURL("https://ghes.com/org/repo")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.False(t, config.IsHosted)
|
assert.False(t, config.IsHosted)
|
||||||
|
|
||||||
@@ -186,7 +185,7 @@ func TestGitHubConfig_GitHubAPIURL(t *testing.T) {
|
|||||||
t.Run("when not hosted with ghe.com", func(t *testing.T) {
|
t.Run("when not hosted with ghe.com", func(t *testing.T) {
|
||||||
os.Setenv("GITHUB_ACTIONS_FORCE_GHES", "1")
|
os.Setenv("GITHUB_ACTIONS_FORCE_GHES", "1")
|
||||||
defer os.Unsetenv("GITHUB_ACTIONS_FORCE_GHES")
|
defer os.Unsetenv("GITHUB_ACTIONS_FORCE_GHES")
|
||||||
config, err := scaleset.ParseGitHubConfigFromURL("https://test.ghe.com/org/repo")
|
config, err := ParseGitHubConfigFromURL("https://test.ghe.com/org/repo")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.False(t, config.IsHosted)
|
assert.False(t, config.IsHosted)
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import (
|
|||||||
|
|
||||||
// Header names for request IDs
|
// Header names for request IDs
|
||||||
const (
|
const (
|
||||||
HeaderActionsActivityID = "ActivityId"
|
headerActionsActivityID = "ActivityId"
|
||||||
HeaderGitHubRequestID = "X-GitHub-Request-Id"
|
headerGitHubRequestID = "X-GitHub-Request-Id"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GitHubAPIError struct {
|
type GitHubAPIError struct {
|
||||||
@@ -59,20 +59,19 @@ func (e *ActionsExceptionError) Error() string {
|
|||||||
return fmt.Sprintf("%s: %s", e.ExceptionName, e.Message)
|
return fmt.Sprintf("%s: %s", e.ExceptionName, e.Message)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ParseActionsErrorFromResponse(response *http.Response) error {
|
func parseActionsErrorFromResponse(response *http.Response) error {
|
||||||
if response.ContentLength == 0 {
|
if response.ContentLength == 0 {
|
||||||
return &ActionsError{
|
return &ActionsError{
|
||||||
ActivityID: response.Header.Get(HeaderActionsActivityID),
|
ActivityID: response.Header.Get(headerActionsActivityID),
|
||||||
StatusCode: response.StatusCode,
|
StatusCode: response.StatusCode,
|
||||||
Err: errors.New("unknown exception"),
|
Err: errors.New("unknown exception"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
defer response.Body.Close()
|
|
||||||
body, err := io.ReadAll(response.Body)
|
body, err := io.ReadAll(response.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &ActionsError{
|
return &ActionsError{
|
||||||
ActivityID: response.Header.Get(HeaderActionsActivityID),
|
ActivityID: response.Header.Get(headerActionsActivityID),
|
||||||
StatusCode: response.StatusCode,
|
StatusCode: response.StatusCode,
|
||||||
Err: err,
|
Err: err,
|
||||||
}
|
}
|
||||||
@@ -83,7 +82,7 @@ func ParseActionsErrorFromResponse(response *http.Response) error {
|
|||||||
if ok && len(contentType) > 0 && strings.Contains(contentType[0], "text/plain") {
|
if ok && len(contentType) > 0 && strings.Contains(contentType[0], "text/plain") {
|
||||||
message := string(body)
|
message := string(body)
|
||||||
return &ActionsError{
|
return &ActionsError{
|
||||||
ActivityID: response.Header.Get(HeaderActionsActivityID),
|
ActivityID: response.Header.Get(headerActionsActivityID),
|
||||||
StatusCode: response.StatusCode,
|
StatusCode: response.StatusCode,
|
||||||
Err: errors.New(message),
|
Err: errors.New(message),
|
||||||
}
|
}
|
||||||
@@ -92,14 +91,14 @@ func ParseActionsErrorFromResponse(response *http.Response) error {
|
|||||||
var exception ActionsExceptionError
|
var exception ActionsExceptionError
|
||||||
if err := json.Unmarshal(body, &exception); err != nil {
|
if err := json.Unmarshal(body, &exception); err != nil {
|
||||||
return &ActionsError{
|
return &ActionsError{
|
||||||
ActivityID: response.Header.Get(HeaderActionsActivityID),
|
ActivityID: response.Header.Get(headerActionsActivityID),
|
||||||
StatusCode: response.StatusCode,
|
StatusCode: response.StatusCode,
|
||||||
Err: err,
|
Err: err,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &ActionsError{
|
return &ActionsError{
|
||||||
ActivityID: response.Header.Get(HeaderActionsActivityID),
|
ActivityID: response.Header.Get(headerActionsActivityID),
|
||||||
StatusCode: response.StatusCode,
|
StatusCode: response.StatusCode,
|
||||||
Err: &exception,
|
Err: &exception,
|
||||||
}
|
}
|
||||||
+30
-31
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
@@ -7,14 +7,13 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestActionsError(t *testing.T) {
|
func TestActionsError(t *testing.T) {
|
||||||
t.Run("contains the status code, activity ID, and error", func(t *testing.T) {
|
t.Run("contains the status code, activity ID, and error", func(t *testing.T) {
|
||||||
err := &scaleset.ActionsError{
|
err := &ActionsError{
|
||||||
ActivityID: "activity-id",
|
ActivityID: "activity-id",
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
Err: errors.New("example error description"),
|
Err: errors.New("example error description"),
|
||||||
@@ -27,10 +26,10 @@ func TestActionsError(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("unwraps the error", func(t *testing.T) {
|
t.Run("unwraps the error", func(t *testing.T) {
|
||||||
err := &scaleset.ActionsError{
|
err := &ActionsError{
|
||||||
ActivityID: "activity-id",
|
ActivityID: "activity-id",
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
Err: &scaleset.ActionsExceptionError{
|
Err: &ActionsExceptionError{
|
||||||
ExceptionName: "exception-name",
|
ExceptionName: "exception-name",
|
||||||
Message: "example error message",
|
Message: "example error message",
|
||||||
},
|
},
|
||||||
@@ -40,23 +39,23 @@ func TestActionsError(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("is exception is ok", func(t *testing.T) {
|
t.Run("is exception is ok", func(t *testing.T) {
|
||||||
err := &scaleset.ActionsError{
|
err := &ActionsError{
|
||||||
ActivityID: "activity-id",
|
ActivityID: "activity-id",
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
Err: &scaleset.ActionsExceptionError{
|
Err: &ActionsExceptionError{
|
||||||
ExceptionName: "exception-name",
|
ExceptionName: "exception-name",
|
||||||
Message: "example error message",
|
Message: "example error message",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
var exception *scaleset.ActionsExceptionError
|
var exception *ActionsExceptionError
|
||||||
assert.True(t, errors.As(err, &exception))
|
assert.True(t, errors.As(err, &exception))
|
||||||
|
|
||||||
assert.True(t, err.IsException("exception-name"))
|
assert.True(t, err.IsException("exception-name"))
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("is exception is not ok", func(t *testing.T) {
|
t.Run("is exception is not ok", func(t *testing.T) {
|
||||||
tt := map[string]*scaleset.ActionsError{
|
tt := map[string]*ActionsError{
|
||||||
"not an exception": {
|
"not an exception": {
|
||||||
ActivityID: "activity-id",
|
ActivityID: "activity-id",
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
@@ -65,7 +64,7 @@ func TestActionsError(t *testing.T) {
|
|||||||
"not target exception": {
|
"not target exception": {
|
||||||
ActivityID: "activity-id",
|
ActivityID: "activity-id",
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
Err: &scaleset.ActionsExceptionError{
|
Err: &ActionsExceptionError{
|
||||||
ExceptionName: "exception-name",
|
ExceptionName: "exception-name",
|
||||||
Message: "example error message",
|
Message: "example error message",
|
||||||
},
|
},
|
||||||
@@ -83,7 +82,7 @@ func TestActionsError(t *testing.T) {
|
|||||||
|
|
||||||
func TestActionsExceptionError(t *testing.T) {
|
func TestActionsExceptionError(t *testing.T) {
|
||||||
t.Run("contains the exception name and message", func(t *testing.T) {
|
t.Run("contains the exception name and message", func(t *testing.T) {
|
||||||
err := &scaleset.ActionsExceptionError{
|
err := &ActionsExceptionError{
|
||||||
ExceptionName: "exception-name",
|
ExceptionName: "exception-name",
|
||||||
Message: "example error message",
|
Message: "example error message",
|
||||||
}
|
}
|
||||||
@@ -96,7 +95,7 @@ func TestActionsExceptionError(t *testing.T) {
|
|||||||
|
|
||||||
func TestGitHubAPIError(t *testing.T) {
|
func TestGitHubAPIError(t *testing.T) {
|
||||||
t.Run("contains the status code, request ID, and error", func(t *testing.T) {
|
t.Run("contains the status code, request ID, and error", func(t *testing.T) {
|
||||||
err := &scaleset.GitHubAPIError{
|
err := &GitHubAPIError{
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
RequestID: "request-id",
|
RequestID: "request-id",
|
||||||
Err: errors.New("example error description"),
|
Err: errors.New("example error description"),
|
||||||
@@ -109,7 +108,7 @@ func TestGitHubAPIError(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("unwraps the error", func(t *testing.T) {
|
t.Run("unwraps the error", func(t *testing.T) {
|
||||||
err := &scaleset.GitHubAPIError{
|
err := &GitHubAPIError{
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
RequestID: "request-id",
|
RequestID: "request-id",
|
||||||
Err: errors.New("example error description"),
|
Err: errors.New("example error description"),
|
||||||
@@ -124,16 +123,16 @@ func ParseActionsErrorFromResponse(t *testing.T) {
|
|||||||
response := &http.Response{
|
response := &http.Response{
|
||||||
ContentLength: 0,
|
ContentLength: 0,
|
||||||
Header: http.Header{
|
Header: http.Header{
|
||||||
scaleset.HeaderActionsActivityID: []string{"activity-id"},
|
headerActionsActivityID: []string{"activity-id"},
|
||||||
},
|
},
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
}
|
}
|
||||||
|
|
||||||
err := scaleset.ParseActionsErrorFromResponse(response)
|
err := parseActionsErrorFromResponse(response)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Equal(t, err.(*scaleset.ActionsError).ActivityID, "activity-id")
|
assert.Equal(t, err.(*ActionsError).ActivityID, "activity-id")
|
||||||
assert.Equal(t, err.(*scaleset.ActionsError).StatusCode, 404)
|
assert.Equal(t, err.(*ActionsError).StatusCode, 404)
|
||||||
assert.Equal(t, err.(*scaleset.ActionsError).Err.Error(), "unknown exception")
|
assert.Equal(t, err.(*ActionsError).Err.Error(), "unknown exception")
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("contains text plain error", func(t *testing.T) {
|
t.Run("contains text plain error", func(t *testing.T) {
|
||||||
@@ -141,16 +140,16 @@ func ParseActionsErrorFromResponse(t *testing.T) {
|
|||||||
response := &http.Response{
|
response := &http.Response{
|
||||||
ContentLength: int64(len(errorMessage)),
|
ContentLength: int64(len(errorMessage)),
|
||||||
Header: http.Header{
|
Header: http.Header{
|
||||||
scaleset.HeaderActionsActivityID: []string{"activity-id"},
|
headerActionsActivityID: []string{"activity-id"},
|
||||||
"Content-Type": []string{"text/plain"},
|
"Content-Type": []string{"text/plain"},
|
||||||
},
|
},
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
Body: io.NopCloser(strings.NewReader(errorMessage)),
|
Body: io.NopCloser(strings.NewReader(errorMessage)),
|
||||||
}
|
}
|
||||||
|
|
||||||
err := scaleset.ParseActionsErrorFromResponse(response)
|
err := parseActionsErrorFromResponse(response)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
var actionsError *scaleset.ActionsError
|
var actionsError *ActionsError
|
||||||
assert.ErrorAs(t, err, &actionsError)
|
assert.ErrorAs(t, err, &actionsError)
|
||||||
assert.Equal(t, actionsError.ActivityID, "activity-id")
|
assert.Equal(t, actionsError.ActivityID, "activity-id")
|
||||||
assert.Equal(t, actionsError.StatusCode, 404)
|
assert.Equal(t, actionsError.StatusCode, 404)
|
||||||
@@ -162,21 +161,21 @@ func ParseActionsErrorFromResponse(t *testing.T) {
|
|||||||
response := &http.Response{
|
response := &http.Response{
|
||||||
ContentLength: int64(len(errorMessage)),
|
ContentLength: int64(len(errorMessage)),
|
||||||
Header: http.Header{
|
Header: http.Header{
|
||||||
scaleset.HeaderActionsActivityID: []string{"activity-id"},
|
headerActionsActivityID: []string{"activity-id"},
|
||||||
"Content-Type": []string{"application/json"},
|
"Content-Type": []string{"application/json"},
|
||||||
},
|
},
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
Body: io.NopCloser(strings.NewReader(errorMessage)),
|
Body: io.NopCloser(strings.NewReader(errorMessage)),
|
||||||
}
|
}
|
||||||
|
|
||||||
err := scaleset.ParseActionsErrorFromResponse(response)
|
err := parseActionsErrorFromResponse(response)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
var actionsError *scaleset.ActionsError
|
var actionsError *ActionsError
|
||||||
assert.ErrorAs(t, err, &actionsError)
|
assert.ErrorAs(t, err, &actionsError)
|
||||||
assert.Equal(t, actionsError.ActivityID, "activity-id")
|
assert.Equal(t, actionsError.ActivityID, "activity-id")
|
||||||
assert.Equal(t, actionsError.StatusCode, 404)
|
assert.Equal(t, actionsError.StatusCode, 404)
|
||||||
|
|
||||||
inner, ok := actionsError.Err.(*scaleset.ActionsExceptionError)
|
inner, ok := actionsError.Err.(*ActionsExceptionError)
|
||||||
require.True(t, ok)
|
require.True(t, ok)
|
||||||
assert.Equal(t, inner.ExceptionName, "exception-name")
|
assert.Equal(t, inner.ExceptionName, "exception-name")
|
||||||
assert.Equal(t, inner.Message, "example error message")
|
assert.Equal(t, inner.Message, "example error message")
|
||||||
@@ -187,17 +186,17 @@ func ParseActionsErrorFromResponse(t *testing.T) {
|
|||||||
response := &http.Response{
|
response := &http.Response{
|
||||||
ContentLength: int64(len(errorMessage)),
|
ContentLength: int64(len(errorMessage)),
|
||||||
Header: http.Header{
|
Header: http.Header{
|
||||||
scaleset.HeaderActionsActivityID: []string{"activity-id"},
|
headerActionsActivityID: []string{"activity-id"},
|
||||||
"Content-Type": []string{"application/json"},
|
"Content-Type": []string{"application/json"},
|
||||||
},
|
},
|
||||||
StatusCode: 404,
|
StatusCode: 404,
|
||||||
Body: io.NopCloser(strings.NewReader(errorMessage)),
|
Body: io.NopCloser(strings.NewReader(errorMessage)),
|
||||||
}
|
}
|
||||||
|
|
||||||
err := scaleset.ParseActionsErrorFromResponse(response)
|
err := parseActionsErrorFromResponse(response)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
|
|
||||||
var actionsExceptionError *scaleset.ActionsExceptionError
|
var actionsExceptionError *ActionsExceptionError
|
||||||
assert.ErrorAs(t, err, &actionsExceptionError)
|
assert.ErrorAs(t, err, &actionsExceptionError)
|
||||||
|
|
||||||
assert.Equal(t, actionsExceptionError.ExceptionName, "exception-name")
|
assert.Equal(t, actionsExceptionError.ExceptionName, "exception-name")
|
||||||
|
|||||||
+38
-39
@@ -1,4 +1,4 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@@ -10,13 +10,12 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/actions/scaleset/testserver"
|
"github.com/actions/scaleset/testserver"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
var testUserAgent = scaleset.UserAgentInfo{
|
var testUserAgent = UserAgentInfo{
|
||||||
Version: "test",
|
Version: "test",
|
||||||
CommitSHA: "test",
|
CommitSHA: "test",
|
||||||
ScaleSetID: 1,
|
ScaleSetID: 1,
|
||||||
@@ -59,32 +58,32 @@ func TestNewGitHubAPIRequest(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, scenario := range scenarios {
|
for _, scenario := range scenarios {
|
||||||
client, err := scaleset.NewClient(scenario.configURL, nil)
|
client, err := NewClient(scenario.configURL, nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
req, err := client.NewGitHubAPIRequest(ctx, http.MethodGet, scenario.path, nil)
|
req, err := client.newGitHubAPIRequest(ctx, http.MethodGet, scenario.path, nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, scenario.expected, req.URL.String())
|
assert.Equal(t, scenario.expected, req.URL.String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("sets user agent header if present", func(t *testing.T) {
|
t.Run("sets user agent header if present", func(t *testing.T) {
|
||||||
client, err := scaleset.NewClient("http://localhost/my-org", nil)
|
client, err := NewClient("http://localhost/my-org", nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
client.SetUserAgent(testUserAgent)
|
client.SetUserAgent(testUserAgent)
|
||||||
|
|
||||||
req, err := client.NewGitHubAPIRequest(ctx, http.MethodGet, "/app/installations/123/access_tokens", nil)
|
req, err := client.newGitHubAPIRequest(ctx, http.MethodGet, "/app/installations/123/access_tokens", nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, testUserAgent.String(), req.Header.Get("User-Agent"))
|
assert.Equal(t, testUserAgent.String(), req.Header.Get("User-Agent"))
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("sets the body we pass", func(t *testing.T) {
|
t.Run("sets the body we pass", func(t *testing.T) {
|
||||||
client, err := scaleset.NewClient("http://localhost/my-org", nil)
|
client, err := NewClient("http://localhost/my-org", nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
req, err := client.NewGitHubAPIRequest(
|
req, err := client.newGitHubAPIRequest(
|
||||||
ctx,
|
ctx,
|
||||||
http.MethodGet,
|
http.MethodGet,
|
||||||
"/app/installations/123/access_tokens",
|
"/app/installations/123/access_tokens",
|
||||||
@@ -100,17 +99,17 @@ func TestNewGitHubAPIRequest(t *testing.T) {
|
|||||||
|
|
||||||
func TestNewActionsServiceRequest(t *testing.T) {
|
func TestNewActionsServiceRequest(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
defaultCreds := &scaleset.ActionsAuth{Token: "token"}
|
defaultCreds := &ActionsAuth{Token: "token"}
|
||||||
|
|
||||||
t.Run("manages authentication", func(t *testing.T) {
|
t.Run("manages authentication", func(t *testing.T) {
|
||||||
t.Run("client is brand new", func(t *testing.T) {
|
t.Run("client is brand new", func(t *testing.T) {
|
||||||
token := defaultActionsToken(t)
|
token := defaultActionsToken(t)
|
||||||
server := testserver.New(t, nil, testserver.WithActionsToken(token))
|
server := testserver.New(t, nil, testserver.WithActionsToken(token))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
client, err := NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
req, err := client.NewActionsServiceRequest(ctx, http.MethodGet, "my-path", nil)
|
req, err := client.newActionsServiceRequest(ctx, http.MethodGet, "my-path", nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, "Bearer "+token, req.Header.Get("Authorization"))
|
assert.Equal(t, "Bearer "+token, req.Header.Get("Authorization"))
|
||||||
@@ -120,12 +119,12 @@ func TestNewActionsServiceRequest(t *testing.T) {
|
|||||||
newToken := defaultActionsToken(t)
|
newToken := defaultActionsToken(t)
|
||||||
server := testserver.New(t, nil, testserver.WithActionsToken(newToken))
|
server := testserver.New(t, nil, testserver.WithActionsToken(newToken))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
client, err := NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
client.ActionsServiceAdminToken = "expiring-token"
|
client.actionsServiceAdminToken = "expiring-token"
|
||||||
client.ActionsServiceAdminTokenExpiresAt = time.Now().Add(59 * time.Second)
|
client.actionsServiceAdminTokenExpiresAt = time.Now().Add(59 * time.Second)
|
||||||
|
|
||||||
req, err := client.NewActionsServiceRequest(ctx, http.MethodGet, "my-path", nil)
|
req, err := client.newActionsServiceRequest(ctx, http.MethodGet, "my-path", nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, "Bearer "+newToken, req.Header.Get("Authorization"))
|
assert.Equal(t, "Bearer "+newToken, req.Header.Get("Authorization"))
|
||||||
@@ -146,17 +145,17 @@ func TestNewActionsServiceRequest(t *testing.T) {
|
|||||||
testserver.WithActionsToken(newToken),
|
testserver.WithActionsToken(newToken),
|
||||||
testserver.WithActionsRegistrationTokenHandler(unauthorizedHandler),
|
testserver.WithActionsRegistrationTokenHandler(unauthorizedHandler),
|
||||||
)
|
)
|
||||||
client, err := scaleset.NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
client, err := NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
expiringToken := "expiring-token"
|
expiringToken := "expiring-token"
|
||||||
expiresAt := time.Now().Add(59 * time.Second)
|
expiresAt := time.Now().Add(59 * time.Second)
|
||||||
client.ActionsServiceAdminToken = expiringToken
|
client.actionsServiceAdminToken = expiringToken
|
||||||
client.ActionsServiceAdminTokenExpiresAt = expiresAt
|
client.actionsServiceAdminTokenExpiresAt = expiresAt
|
||||||
_, err = client.NewActionsServiceRequest(ctx, http.MethodGet, "my-path", nil)
|
_, err = client.newActionsServiceRequest(ctx, http.MethodGet, "my-path", nil)
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Contains(t, err.Error(), errMessage)
|
assert.Contains(t, err.Error(), errMessage)
|
||||||
assert.Equal(t, client.ActionsServiceAdminToken, expiringToken)
|
assert.Equal(t, client.actionsServiceAdminToken, expiringToken)
|
||||||
assert.Equal(t, client.ActionsServiceAdminTokenExpiresAt, expiresAt)
|
assert.Equal(t, client.actionsServiceAdminTokenExpiresAt, expiresAt)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("admin token refresh retry", func(t *testing.T) {
|
t.Run("admin token refresh retry", func(t *testing.T) {
|
||||||
@@ -164,9 +163,9 @@ func TestNewActionsServiceRequest(t *testing.T) {
|
|||||||
errMessage := `{"message":"test"}`
|
errMessage := `{"message":"test"}`
|
||||||
|
|
||||||
srv := "http://github.com/my-org"
|
srv := "http://github.com/my-org"
|
||||||
resp := &scaleset.ActionsServiceAdminConnection{
|
resp := &ActionsServiceAdminConnection{
|
||||||
AdminToken: &newToken,
|
AdminToken: &newToken,
|
||||||
ActionsServiceUrl: &srv,
|
ActionsServiceURL: &srv,
|
||||||
}
|
}
|
||||||
failures := 0
|
failures := 0
|
||||||
unauthorizedHandler := func(w http.ResponseWriter, r *http.Request) {
|
unauthorizedHandler := func(w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -182,30 +181,30 @@ func TestNewActionsServiceRequest(t *testing.T) {
|
|||||||
_ = json.NewEncoder(w).Encode(resp)
|
_ = json.NewEncoder(w).Encode(resp)
|
||||||
}
|
}
|
||||||
server := testserver.New(t, nil, testserver.WithActionsToken("random-token"), testserver.WithActionsToken(newToken), testserver.WithActionsRegistrationTokenHandler(unauthorizedHandler))
|
server := testserver.New(t, nil, testserver.WithActionsToken("random-token"), testserver.WithActionsToken(newToken), testserver.WithActionsRegistrationTokenHandler(unauthorizedHandler))
|
||||||
client, err := scaleset.NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
client, err := NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
expiringToken := "expiring-token"
|
expiringToken := "expiring-token"
|
||||||
expiresAt := time.Now().Add(59 * time.Second)
|
expiresAt := time.Now().Add(59 * time.Second)
|
||||||
client.ActionsServiceAdminToken = expiringToken
|
client.actionsServiceAdminToken = expiringToken
|
||||||
client.ActionsServiceAdminTokenExpiresAt = expiresAt
|
client.actionsServiceAdminTokenExpiresAt = expiresAt
|
||||||
|
|
||||||
_, err = client.NewActionsServiceRequest(ctx, http.MethodGet, "my-path", nil)
|
_, err = client.newActionsServiceRequest(ctx, http.MethodGet, "my-path", nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, client.ActionsServiceAdminToken, newToken)
|
assert.Equal(t, client.actionsServiceAdminToken, newToken)
|
||||||
assert.Equal(t, client.ActionsServiceURL, srv)
|
assert.Equal(t, client.actionsServiceURL, srv)
|
||||||
assert.NotEqual(t, client.ActionsServiceAdminTokenExpiresAt, expiresAt)
|
assert.NotEqual(t, client.actionsServiceAdminTokenExpiresAt, expiresAt)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("token is currently valid", func(t *testing.T) {
|
t.Run("token is currently valid", func(t *testing.T) {
|
||||||
tokenThatShouldNotBeFetched := defaultActionsToken(t)
|
tokenThatShouldNotBeFetched := defaultActionsToken(t)
|
||||||
server := testserver.New(t, nil, testserver.WithActionsToken(tokenThatShouldNotBeFetched))
|
server := testserver.New(t, nil, testserver.WithActionsToken(tokenThatShouldNotBeFetched))
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
client, err := NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
client.ActionsServiceAdminToken = "healthy-token"
|
client.actionsServiceAdminToken = "healthy-token"
|
||||||
client.ActionsServiceAdminTokenExpiresAt = time.Now().Add(1 * time.Hour)
|
client.actionsServiceAdminTokenExpiresAt = time.Now().Add(1 * time.Hour)
|
||||||
|
|
||||||
req, err := client.NewActionsServiceRequest(ctx, http.MethodGet, "my-path", nil)
|
req, err := client.newActionsServiceRequest(ctx, http.MethodGet, "my-path", nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, "Bearer healthy-token", req.Header.Get("Authorization"))
|
assert.Equal(t, "Bearer healthy-token", req.Header.Get("Authorization"))
|
||||||
@@ -215,10 +214,10 @@ func TestNewActionsServiceRequest(t *testing.T) {
|
|||||||
t.Run("builds the right URL including api version", func(t *testing.T) {
|
t.Run("builds the right URL including api version", func(t *testing.T) {
|
||||||
server := testserver.New(t, nil)
|
server := testserver.New(t, nil)
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
client, err := NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
req, err := client.NewActionsServiceRequest(ctx, http.MethodGet, "/my/path?name=banana", nil)
|
req, err := client.newActionsServiceRequest(ctx, http.MethodGet, "/my/path?name=banana", nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
serverURL, err := url.Parse(server.URL)
|
serverURL, err := url.Parse(server.URL)
|
||||||
@@ -234,12 +233,12 @@ func TestNewActionsServiceRequest(t *testing.T) {
|
|||||||
t.Run("populates header", func(t *testing.T) {
|
t.Run("populates header", func(t *testing.T) {
|
||||||
server := testserver.New(t, nil)
|
server := testserver.New(t, nil)
|
||||||
|
|
||||||
client, err := scaleset.NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
client, err := NewClient(server.ConfigURLForOrg("my-org"), defaultCreds)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
client.SetUserAgent(testUserAgent)
|
client.SetUserAgent(testUserAgent)
|
||||||
|
|
||||||
req, err := client.NewActionsServiceRequest(ctx, http.MethodGet, "/my/path", nil)
|
req, err := client.newActionsServiceRequest(ctx, http.MethodGet, "/my/path", nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, testUserAgent.String(), req.Header.Get("User-Agent"))
|
assert.Equal(t, testUserAgent.String(), req.Header.Get("User-Agent"))
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ type AcquirableJobList struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type AcquirableJob struct {
|
type AcquirableJob struct {
|
||||||
AcquireJobUrl string `json:"acquireJobUrl"`
|
AcquireJobURL string `json:"acquireJobUrl"`
|
||||||
MessageType string `json:"messageType"`
|
MessageType string `json:"messageType"`
|
||||||
RunnerRequestId int64 `json:"runnerRequestId"`
|
RunnerRequestID int64 `json:"runnerRequestId"`
|
||||||
RepositoryName string `json:"repositoryName"`
|
RepositoryName string `json:"repositoryName"`
|
||||||
OwnerName string `json:"ownerName"`
|
OwnerName string `json:"ownerName"`
|
||||||
JobWorkflowRef string `json:"jobWorkflowRef"`
|
JobWorkflowRef string `json:"jobWorkflowRef"`
|
||||||
@@ -28,7 +28,7 @@ type Int64List struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type JobAvailable struct {
|
type JobAvailable struct {
|
||||||
AcquireJobUrl string `json:"acquireJobUrl"`
|
AcquireJobURL string `json:"acquireJobUrl"`
|
||||||
JobMessageBase
|
JobMessageBase
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ type JobStarted struct {
|
|||||||
|
|
||||||
type JobCompleted struct {
|
type JobCompleted struct {
|
||||||
Result string `json:"result"`
|
Result string `json:"result"`
|
||||||
RunnerId int `json:"runnerId"`
|
RunnerID int `json:"runnerId"`
|
||||||
RunnerName string `json:"runnerName"`
|
RunnerName string `json:"runnerName"`
|
||||||
JobMessageBase
|
JobMessageBase
|
||||||
}
|
}
|
||||||
@@ -88,14 +88,14 @@ type RunnerGroupList struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type RunnerScaleSet struct {
|
type RunnerScaleSet struct {
|
||||||
Id int `json:"id,omitempty"`
|
ID int `json:"id,omitempty"`
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
RunnerGroupId int `json:"runnerGroupId,omitempty"`
|
RunnerGroupID int `json:"runnerGroupId,omitempty"`
|
||||||
RunnerGroupName string `json:"runnerGroupName,omitempty"`
|
RunnerGroupName string `json:"runnerGroupName,omitempty"`
|
||||||
Labels []Label `json:"labels,omitempty"`
|
Labels []Label `json:"labels,omitempty"`
|
||||||
RunnerSetting RunnerSetting `json:"RunnerSetting,omitempty"`
|
RunnerSetting RunnerSetting `json:"RunnerSetting,omitempty"`
|
||||||
CreatedOn time.Time `json:"createdOn,omitempty"`
|
CreatedOn time.Time `json:"createdOn,omitempty"`
|
||||||
RunnerJitConfigUrl string `json:"runnerJitConfigUrl,omitempty"`
|
RunnerJitConfigURL string `json:"runnerJitConfigUrl,omitempty"`
|
||||||
Statistics *RunnerScaleSetStatistic `json:"statistics,omitempty"`
|
Statistics *RunnerScaleSetStatistic `json:"statistics,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ type RunnerScaleSetJitRunnerSetting struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type RunnerScaleSetMessage struct {
|
type RunnerScaleSetMessage struct {
|
||||||
MessageId int64 `json:"messageId"`
|
MessageID int64 `json:"messageId"`
|
||||||
MessageType string `json:"messageType"`
|
MessageType string `json:"messageType"`
|
||||||
Body string `json:"body"`
|
Body string `json:"body"`
|
||||||
Statistics *RunnerScaleSetStatistic `json:"statistics"`
|
Statistics *RunnerScaleSetStatistic `json:"statistics"`
|
||||||
@@ -117,10 +117,10 @@ type runnerScaleSetsResponse struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type RunnerScaleSetSession struct {
|
type RunnerScaleSetSession struct {
|
||||||
SessionId *uuid.UUID `json:"sessionId,omitempty"`
|
SessionID *uuid.UUID `json:"sessionId,omitempty"`
|
||||||
OwnerName string `json:"ownerName,omitempty"`
|
OwnerName string `json:"ownerName,omitempty"`
|
||||||
RunnerScaleSet *RunnerScaleSet `json:"runnerScaleSet,omitempty"`
|
RunnerScaleSet *RunnerScaleSet `json:"runnerScaleSet,omitempty"`
|
||||||
MessageQueueUrl string `json:"messageQueueUrl,omitempty"`
|
MessageQueueURL string `json:"messageQueueUrl,omitempty"`
|
||||||
MessageQueueAccessToken string `json:"messageQueueAccessToken,omitempty"`
|
MessageQueueAccessToken string `json:"messageQueueAccessToken,omitempty"`
|
||||||
Statistics *RunnerScaleSetStatistic `json:"statistics,omitempty"`
|
Statistics *RunnerScaleSetStatistic `json:"statistics,omitempty"`
|
||||||
}
|
}
|
||||||
@@ -147,9 +147,9 @@ type RunnerReferenceList struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type RunnerReference struct {
|
type RunnerReference struct {
|
||||||
Id int `json:"id"`
|
ID int `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
RunnerScaleSetId int `json:"runnerScaleSetId"`
|
RunnerScaleSetID int `json:"runnerScaleSetId"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type RunnerScaleSetJitRunnerConfig struct {
|
type RunnerScaleSetJitRunnerConfig struct {
|
||||||
|
|||||||
+3
-3
@@ -1,14 +1,14 @@
|
|||||||
package scaleset_test
|
package scaleset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/actions/scaleset"
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestUserAgentInfoString(t *testing.T) {
|
func TestUserAgentInfoString(t *testing.T) {
|
||||||
userAgentInfo := scaleset.UserAgentInfo{
|
userAgentInfo := UserAgentInfo{
|
||||||
|
System: "actions-runner-controller",
|
||||||
Version: "0.1.0",
|
Version: "0.1.0",
|
||||||
CommitSHA: "1234567890abcdef",
|
CommitSHA: "1234567890abcdef",
|
||||||
ScaleSetID: 10,
|
ScaleSetID: 10,
|
||||||
|
|||||||
Reference in New Issue
Block a user