package loadtestorigin import ( "bytes" "image/jpeg" "net/http" "net/http/httptest" "testing" ) // TestEveryPathServesTheSameJPEG checks that the origin answers any path with // 200 and the same JPEG, so every new path script/loadtest asks pixad for is // a valid source image. func TestEveryPathServesTheSameJPEG(t *testing.T) { t.Parallel() photo, err := makeJPEG() if err != nil { t.Fatalf("makeJPEG: %v", err) } size, err := jpeg.DecodeConfig(bytes.NewReader(photo)) if err != nil { t.Fatalf("the image does not decode as a JPEG: %v", err) } if size.Width != imageWidth || size.Height != imageHeight { t.Errorf("the image is %dx%d, want %dx%d", size.Width, size.Height, imageWidth, imageHeight) } handler := newHandler(photo) for _, path := range []string{"/", "/miss/1.jpg", "/herd/2.jpg"} { rec := httptest.NewRecorder() handler.ServeHTTP(rec, httptest.NewRequestWithContext( t.Context(), http.MethodGet, path, nil)) if rec.Code != http.StatusOK { t.Errorf("%s: status = %d, want %d", path, rec.Code, http.StatusOK) } if ct := rec.Header().Get("Content-Type"); ct != "image/jpeg" { t.Errorf("%s: Content-Type = %q, want image/jpeg", path, ct) } if !bytes.Equal(rec.Body.Bytes(), photo) { t.Errorf("%s: the body is not the image", path) } } }