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