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 }