11package badgestorer_test
22
33import (
4+ "context"
5+ "os"
46 "testing"
57
8+ "github.com/google/go-github/v56/github"
69 "github.com/stretchr/testify/assert"
710
811 . "github.com/vladopajic/go-test-coverage/v2/pkg/testcoverage/badgestorer"
912)
1013
14+ const envGitToken = "GITHUB_TOKEN" //nolint:gosec // false-positive
15+
1116func Test_Github_Error (t * testing.T ) {
1217 t .Parallel ()
1318
@@ -27,3 +32,76 @@ func Test_Github_Error(t *testing.T) {
2732 assert .Error (t , err )
2833 assert .False (t , updated )
2934}
35+
36+ func Test_Github (t * testing.T ) {
37+ t .Parallel ()
38+
39+ if testing .Short () {
40+ return
41+ }
42+
43+ if getEnv (envGitToken ) == "" {
44+ t .Skipf ("%v env variable not set" , envGitToken )
45+ return
46+ }
47+
48+ data := []byte {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 }
49+ cfg := Git {
50+ Token : getEnv (envGitToken ),
51+ Owner : "vladopajic" ,
52+ Repository : "go-test-coverage" ,
53+ Branch : "badges-integration-test" ,
54+ FileName : "badge.svg" ,
55+ }
56+ s := NewGithub (cfg )
57+
58+ // put badge
59+ updated , err := s .Store (data )
60+ assert .NoError (t , err )
61+ assert .True (t , updated )
62+
63+ // put badge again - no change
64+ updated , err = s .Store (data )
65+ assert .NoError (t , err )
66+ assert .False (t , updated )
67+
68+ // put badge again - expect change
69+ updated , err = s .Store (append (data , byte (1 )))
70+ assert .NoError (t , err )
71+ assert .True (t , updated )
72+
73+ deleteFile (t , cfg )
74+ }
75+
76+ func getEnv (key string ) string {
77+ value , _ := os .LookupEnv (key )
78+ return value
79+ }
80+
81+ func deleteFile (t * testing.T , cfg Git ) {
82+ t .Helper ()
83+
84+ client := github .NewClient (nil ).WithAuthToken (cfg .Token )
85+
86+ fc , _ , _ , err := client .Repositories .GetContents (
87+ context .Background (),
88+ cfg .Owner ,
89+ cfg .Repository ,
90+ cfg .FileName ,
91+ & github.RepositoryContentGetOptions {Ref : cfg .Branch },
92+ )
93+ assert .NoError (t , err )
94+
95+ _ , _ , err = client .Repositories .DeleteFile (
96+ context .Background (),
97+ cfg .Owner ,
98+ cfg .Repository ,
99+ cfg .FileName ,
100+ & github.RepositoryContentFileOptions {
101+ Message : github .String ("delete testing badge " + cfg .FileName ),
102+ Branch : & cfg .Branch ,
103+ SHA : fc .SHA ,
104+ },
105+ )
106+ assert .NoError (t , err )
107+ }
0 commit comments