github.phpd.cn/thought-machine/please@v12.2.0+incompatible/tools/cache/server/http_server_test.go (about)

     1  package server
     2  
     3  import (
     4  	"fmt"
     5  	"io"
     6  	"net/http"
     7  	"net/http/httptest"
     8  	"strings"
     9  	"testing"
    10  
    11  	"core"
    12  )
    13  
    14  var (
    15  	server       *httptest.Server
    16  	realURL      string
    17  	fakeURL      string
    18  	otherRealURL string
    19  	extraRealURL string
    20  	reader       io.Reader
    21  )
    22  
    23  const cachePath = "tools/cache/server/test_data"
    24  
    25  func init() {
    26  	c := newCache(cachePath)
    27  	server = httptest.NewServer(BuildRouter(c))
    28  	realURL = fmt.Sprintf("%s/artifact/darwin_amd64/pack/label/hash/label.ext", server.URL)
    29  	otherRealURL = fmt.Sprintf("%s/artifact/linux_amd64/otherpack/label/hash/label.ext", server.URL)
    30  	extraRealURL = fmt.Sprintf("%s/artifact/extrapack/label", server.URL)
    31  	fakeURL = fmt.Sprintf("%s/artifact/darwin_amd64/somepack/somelabel/somehash/somelabel.ext", server.URL)
    32  }
    33  
    34  func TestOutputFolderExists(t *testing.T) {
    35  	if !core.PathExists(cachePath) {
    36  		t.Errorf("%s does not exist.", cachePath)
    37  	}
    38  }
    39  
    40  func TestGetHandler(t *testing.T) {
    41  	request, err := http.NewRequest("GET", realURL, reader)
    42  	res, err := http.DefaultClient.Do(request)
    43  
    44  	if err != nil {
    45  		t.Error(err)
    46  	}
    47  	if res.StatusCode < 200 || res.StatusCode > 299 {
    48  		t.Error("Expected response Status Accepted, got:", res.Status)
    49  	}
    50  }
    51  
    52  func TestGetHandlerError(t *testing.T) {
    53  	request, _ := http.NewRequest("GET", fakeURL, reader)
    54  	res, _ := http.DefaultClient.Do(request)
    55  	if res.StatusCode != 404 {
    56  		t.Error("Expected nil and found artifact.")
    57  	}
    58  }
    59  
    60  func TestPostHandler(t *testing.T) {
    61  	fileContent := "This is a newly created file."
    62  	reader = strings.NewReader(fileContent)
    63  	request, err := http.NewRequest("POST", fakeURL, reader)
    64  	res, err := http.DefaultClient.Do(request)
    65  
    66  	if err != nil {
    67  		t.Error(err)
    68  	}
    69  
    70  	if res.StatusCode < 200 || res.StatusCode > 299 {
    71  		t.Error("Expected response Status Accepted, got:", res.Status)
    72  	}
    73  }
    74  
    75  func TestDeleteHandler(t *testing.T) {
    76  	request, _ := http.NewRequest("DELETE", extraRealURL, reader)
    77  	res, err := http.DefaultClient.Do(request)
    78  	if err != nil {
    79  		t.Error(err)
    80  	}
    81  
    82  	if res.StatusCode < 200 || res.StatusCode > 299 {
    83  		t.Error("Expected response Status Accepted, got:", res.Status)
    84  	}
    85  }
    86  
    87  func TestDeleteAllHandler(t *testing.T) {
    88  	request, _ := http.NewRequest("DELETE", server.URL, reader)
    89  	res, err := http.DefaultClient.Do(request)
    90  	if err != nil {
    91  		t.Error(err)
    92  	}
    93  
    94  	if res.StatusCode < 200 || res.StatusCode > 299 {
    95  		t.Error("Expected response Status Accepted, got:", res.Status)
    96  	}
    97  }