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  }