feat: add initial helper methods
This commit is contained in:
parent
81d80fcced
commit
76a93c0d8c
6 changed files with 1165 additions and 0 deletions
144
context_test.go
Normal file
144
context_test.go
Normal file
|
@ -0,0 +1,144 @@
|
|||
package sdk
|
||||
|
||||
import (
|
||||
"os"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestAction_Context(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
f, err := os.CreateTemp("", "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Cleanup(func() { os.Remove(f.Name()) })
|
||||
|
||||
if _, err := f.Write([]byte(`{"foo": "bar"}`)); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := f.Close(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
eventPayloadPath := f.Name()
|
||||
|
||||
cases := []struct {
|
||||
name string
|
||||
env map[string]string
|
||||
exp *GitHubContext
|
||||
}{
|
||||
{
|
||||
name: "empty",
|
||||
env: nil,
|
||||
exp: &GitHubContext{
|
||||
// Defaults
|
||||
APIURL: "https://api.github.com",
|
||||
ServerURL: "https://github.com",
|
||||
GraphqlURL: "https://api.github.com/graphql",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "no_payload",
|
||||
env: map[string]string{
|
||||
"GITHUB_ACTION": "__repo-owner_name-of-action-repo",
|
||||
"GITHUB_ACTION_PATH": "/path/to/action",
|
||||
"GITHUB_ACTION_REPOSITORY": "repo-owner/name-of-action-repo",
|
||||
"GITHUB_ACTIONS": "true",
|
||||
"GITHUB_ACTOR": "sethvargo",
|
||||
"GITHUB_API_URL": "https://foo.com",
|
||||
"GITHUB_BASE_REF": "main",
|
||||
"GITHUB_ENV": "/path/to/env",
|
||||
"GITHUB_EVENT_NAME": "event_name",
|
||||
"GITHUB_HEAD_REF": "headbranch",
|
||||
"GITHUB_GRAPHQL_URL": "https://baz.com",
|
||||
"GITHUB_JOB": "12",
|
||||
"GITHUB_PATH": "/path/to/path",
|
||||
"GITHUB_REF": "refs/tags/v1.0",
|
||||
"GITHUB_REF_NAME": "v1.0",
|
||||
"GITHUB_REF_PROTECTED": "true",
|
||||
"GITHUB_REF_TYPE": "tag",
|
||||
"GITHUB_REPOSITORY": "sethvargo/baz",
|
||||
"GITHUB_REPOSITORY_OWNER": "sethvargo",
|
||||
"GITHUB_RETENTION_DAYS": "90",
|
||||
"GITHUB_RUN_ATTEMPT": "6",
|
||||
"GITHUB_RUN_ID": "56",
|
||||
"GITHUB_RUN_NUMBER": "34",
|
||||
"GITHUB_SERVER_URL": "https://bar.com",
|
||||
"GITHUB_SHA": "abcd1234",
|
||||
"GITHUB_STEP_SUMMARY": "/path/to/summary",
|
||||
"GITHUB_WORKFLOW": "test",
|
||||
"GITHUB_WORKSPACE": "/path/to/workspace",
|
||||
},
|
||||
exp: &GitHubContext{
|
||||
Action: "__repo-owner_name-of-action-repo",
|
||||
ActionPath: "/path/to/action",
|
||||
ActionRepository: "repo-owner/name-of-action-repo",
|
||||
Actions: true,
|
||||
Actor: "sethvargo",
|
||||
APIURL: "https://foo.com",
|
||||
BaseRef: "main",
|
||||
Env: "/path/to/env",
|
||||
EventName: "event_name",
|
||||
// NOTE: No EventPath
|
||||
GraphqlURL: "https://baz.com",
|
||||
Job: "12",
|
||||
HeadRef: "headbranch",
|
||||
Path: "/path/to/path",
|
||||
Ref: "refs/tags/v1.0",
|
||||
RefName: "v1.0",
|
||||
RefProtected: true,
|
||||
RefType: "tag",
|
||||
Repository: "sethvargo/baz",
|
||||
RepositoryOwner: "sethvargo",
|
||||
RetentionDays: 90,
|
||||
RunAttempt: 6,
|
||||
RunID: 56,
|
||||
RunNumber: 34,
|
||||
ServerURL: "https://bar.com",
|
||||
SHA: "abcd1234",
|
||||
StepSummary: "/path/to/summary",
|
||||
Workflow: "test",
|
||||
Workspace: "/path/to/workspace",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "payload",
|
||||
env: map[string]string{
|
||||
"GITHUB_EVENT_PATH": eventPayloadPath,
|
||||
},
|
||||
exp: &GitHubContext{
|
||||
EventPath: eventPayloadPath,
|
||||
|
||||
// Defaults
|
||||
APIURL: "https://api.github.com",
|
||||
ServerURL: "https://github.com",
|
||||
GraphqlURL: "https://api.github.com/graphql",
|
||||
|
||||
Event: map[string]any{
|
||||
"foo": "bar",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
tc := tc
|
||||
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
a := New()
|
||||
a.env = func(s string) string { return tc.env[s] }
|
||||
got, err := a.Context()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(got, tc.exp) {
|
||||
t.Errorf("expected\n\n%#v\n\nto be\n\n%#v\n", got, tc.exp)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue