github.com/agrison/harpoon@v0.0.0-20180819075247-a667a15fd0eb/integ_test.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "net" 7 "net/http" 8 "os" 9 "testing" 10 "time" 11 ) 12 13 func TestMain(m *testing.M) { 14 // switch to testdata dir to access dummy config.toml 15 os.Chdir("./testdata") 16 17 // set up verbose flags for testing 18 os.Args = append(os.Args, "-test.v") 19 20 go main() 21 22 // make sure the server is up before running tests 23 tries := 10 24 for i := 0; i < tries; i++ { 25 if conn, err := net.Dial("tcp", "localhost:9001"); err == nil { 26 conn.Close() 27 fmt.Println("Server up! Waiting another second.") 28 <-time.After(1 * time.Second) 29 break 30 } 31 if i < tries-1 { 32 fmt.Printf("Server not up yet. Try %d\n", i) 33 } else { 34 fmt.Printf("Server not up after %d tries. Failing tests.\n", tries) 35 os.Exit(-1) 36 } 37 <-time.After(1 * time.Second) 38 } 39 40 os.Exit(m.Run()) 41 } 42 43 func TestPushEventExplicit(t *testing.T) { 44 body, err := os.Open("./push_develop.json") 45 if err != nil { 46 t.Fatalf("Failed to open payload file. Error: %v", err) 47 } 48 49 client := http.Client{} 50 req, _ := http.NewRequest("POST", "http://localhost:9001", body) 51 req.Header.Add("X-GitHub-Event", "push") 52 53 res, err := client.Do(req) 54 if err != nil { 55 t.Fatalf("Error posting to server. Error: %v", err) 56 } 57 58 if res.StatusCode != 200 { 59 t.Errorf("Bad response from server. Response code: %v", res.StatusCode) 60 } 61 62 data, err := ioutil.ReadAll(res.Body) 63 if err != nil { 64 t.Fatalf("Failed to read in response body. Error: %v", err) 65 t.FailNow() 66 } 67 res.Body.Close() 68 69 t.Logf("Data returned: %v", data) 70 } 71 72 func TestPushEventAll(t *testing.T) { 73 body, err := os.Open("./push_master.json") 74 if err != nil { 75 t.Fatalf("Failed to open payload file. Error: %v", err) 76 } 77 78 client := http.Client{} 79 req, _ := http.NewRequest("POST", "http://localhost:9001", body) 80 req.Header.Add("X-GitHub-Event", "push") 81 82 res, err := client.Do(req) 83 if err != nil { 84 t.Fatalf("Error posting to server. Error: %v", err) 85 } 86 87 if res.StatusCode != 200 { 88 t.Errorf("Bad response from server. Response code: %v", res.StatusCode) 89 } 90 91 data, err := ioutil.ReadAll(res.Body) 92 if err != nil { 93 t.Fatalf("Failed to read in response body. Error: %v", err) 94 t.FailNow() 95 } 96 res.Body.Close() 97 98 t.Logf("Data returned: %v", data) 99 } 100 101 func TestPushEventBadRepo(t *testing.T) { 102 body, err := os.Open("./push_differentrepo.json") 103 if err != nil { 104 t.Fatalf("Failed to open payload file. Error: %v", err) 105 } 106 107 client := http.Client{} 108 req, _ := http.NewRequest("POST", "http://localhost:9001", body) 109 req.Header.Add("X-GitHub-Event", "push") 110 111 res, err := client.Do(req) 112 if err != nil { 113 t.Fatalf("Error posting to server. Error: %v", err) 114 } 115 116 if res.StatusCode != 200 { 117 t.Errorf("Bad response from server. Response code: %v", res.StatusCode) 118 } 119 120 data, err := ioutil.ReadAll(res.Body) 121 if err != nil { 122 t.Fatalf("Failed to read in response body. Error: %v", err) 123 t.FailNow() 124 } 125 res.Body.Close() 126 127 t.Logf("Data returned: %v", data) 128 }