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"
15+
1116func Test_Github_Error (t * testing.T ) {
1217 t .Parallel ()
1318
@@ -27,3 +32,65 @@ 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 : "unit-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+ _ , _ , err := client .Repositories .DeleteFile (
86+ context .Background (),
87+ cfg .Owner ,
88+ cfg .Repository ,
89+ cfg .FileName ,
90+ & github.RepositoryContentFileOptions {
91+ Message : github .String ("delete testing badge " + cfg .FileName ),
92+ Branch : & cfg .Branch ,
93+ },
94+ )
95+ assert .NoError (t , err )
96+ }
0 commit comments