github.com/nektos/act@v0.2.63/pkg/model/github_context_test.go (about) 1 package model 2 3 import ( 4 "context" 5 "fmt" 6 "testing" 7 8 log "github.com/sirupsen/logrus" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestSetRef(t *testing.T) { 13 log.SetLevel(log.DebugLevel) 14 15 oldFindGitRef := findGitRef 16 oldFindGitRevision := findGitRevision 17 defer func() { findGitRef = oldFindGitRef }() 18 defer func() { findGitRevision = oldFindGitRevision }() 19 20 findGitRef = func(ctx context.Context, file string) (string, error) { 21 return "refs/heads/master", nil 22 } 23 24 findGitRevision = func(ctx context.Context, file string) (string, string, error) { 25 return "", "1234fakesha", nil 26 } 27 28 tables := []struct { 29 eventName string 30 event map[string]interface{} 31 ref string 32 refName string 33 }{ 34 { 35 eventName: "pull_request_target", 36 event: map[string]interface{}{}, 37 ref: "refs/heads/master", 38 refName: "master", 39 }, 40 { 41 eventName: "pull_request", 42 event: map[string]interface{}{ 43 "number": 1234., 44 }, 45 ref: "refs/pull/1234/merge", 46 refName: "1234/merge", 47 }, 48 { 49 eventName: "deployment", 50 event: map[string]interface{}{ 51 "deployment": map[string]interface{}{ 52 "ref": "refs/heads/somebranch", 53 }, 54 }, 55 ref: "refs/heads/somebranch", 56 refName: "somebranch", 57 }, 58 { 59 eventName: "release", 60 event: map[string]interface{}{ 61 "release": map[string]interface{}{ 62 "tag_name": "v1.0.0", 63 }, 64 }, 65 ref: "refs/tags/v1.0.0", 66 refName: "v1.0.0", 67 }, 68 { 69 eventName: "push", 70 event: map[string]interface{}{ 71 "ref": "refs/heads/somebranch", 72 }, 73 ref: "refs/heads/somebranch", 74 refName: "somebranch", 75 }, 76 { 77 eventName: "unknown", 78 event: map[string]interface{}{ 79 "repository": map[string]interface{}{ 80 "default_branch": "main", 81 }, 82 }, 83 ref: "refs/heads/main", 84 refName: "main", 85 }, 86 { 87 eventName: "no-event", 88 event: map[string]interface{}{}, 89 ref: "refs/heads/master", 90 refName: "master", 91 }, 92 } 93 94 for _, table := range tables { 95 t.Run(table.eventName, func(t *testing.T) { 96 ghc := &GithubContext{ 97 EventName: table.eventName, 98 BaseRef: "master", 99 Event: table.event, 100 } 101 102 ghc.SetRef(context.Background(), "main", "/some/dir") 103 ghc.SetRefTypeAndName() 104 105 assert.Equal(t, table.ref, ghc.Ref) 106 assert.Equal(t, table.refName, ghc.RefName) 107 }) 108 } 109 110 t.Run("no-default-branch", func(t *testing.T) { 111 findGitRef = func(ctx context.Context, file string) (string, error) { 112 return "", fmt.Errorf("no default branch") 113 } 114 115 ghc := &GithubContext{ 116 EventName: "no-default-branch", 117 Event: map[string]interface{}{}, 118 } 119 120 ghc.SetRef(context.Background(), "", "/some/dir") 121 122 assert.Equal(t, "refs/heads/master", ghc.Ref) 123 }) 124 } 125 126 func TestSetSha(t *testing.T) { 127 log.SetLevel(log.DebugLevel) 128 129 oldFindGitRef := findGitRef 130 oldFindGitRevision := findGitRevision 131 defer func() { findGitRef = oldFindGitRef }() 132 defer func() { findGitRevision = oldFindGitRevision }() 133 134 findGitRef = func(ctx context.Context, file string) (string, error) { 135 return "refs/heads/master", nil 136 } 137 138 findGitRevision = func(ctx context.Context, file string) (string, string, error) { 139 return "", "1234fakesha", nil 140 } 141 142 tables := []struct { 143 eventName string 144 event map[string]interface{} 145 sha string 146 }{ 147 { 148 eventName: "pull_request_target", 149 event: map[string]interface{}{ 150 "pull_request": map[string]interface{}{ 151 "base": map[string]interface{}{ 152 "sha": "pr-base-sha", 153 }, 154 }, 155 }, 156 sha: "pr-base-sha", 157 }, 158 { 159 eventName: "pull_request", 160 event: map[string]interface{}{ 161 "number": 1234., 162 }, 163 sha: "1234fakesha", 164 }, 165 { 166 eventName: "deployment", 167 event: map[string]interface{}{ 168 "deployment": map[string]interface{}{ 169 "sha": "deployment-sha", 170 }, 171 }, 172 sha: "deployment-sha", 173 }, 174 { 175 eventName: "release", 176 event: map[string]interface{}{}, 177 sha: "1234fakesha", 178 }, 179 { 180 eventName: "push", 181 event: map[string]interface{}{ 182 "after": "push-sha", 183 "deleted": false, 184 }, 185 sha: "push-sha", 186 }, 187 { 188 eventName: "unknown", 189 event: map[string]interface{}{}, 190 sha: "1234fakesha", 191 }, 192 { 193 eventName: "no-event", 194 event: map[string]interface{}{}, 195 sha: "1234fakesha", 196 }, 197 } 198 199 for _, table := range tables { 200 t.Run(table.eventName, func(t *testing.T) { 201 ghc := &GithubContext{ 202 EventName: table.eventName, 203 BaseRef: "master", 204 Event: table.event, 205 } 206 207 ghc.SetSha(context.Background(), "/some/dir") 208 209 assert.Equal(t, table.sha, ghc.Sha) 210 }) 211 } 212 }