You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.9 KiB
78 lines
1.9 KiB
package clientserver |
|
|
|
import ( |
|
"bytes" |
|
"encoding/json" |
|
"io/ioutil" |
|
"log" |
|
"net/http" |
|
"net/http/httptest" |
|
"os" |
|
customtypes "sample-choose-ad/cmd/custom_types" |
|
req_types "sample-choose-ad/cmd/requests_types" |
|
"testing" |
|
) |
|
|
|
func TestGetRequestWithEmptyBody(t *testing.T) { |
|
req := httptest.NewRequest(http.MethodGet, "/placements/request", nil) |
|
w := httptest.NewRecorder() |
|
_, _ = req, w |
|
a := handleRequest([]customtypes.PartnersAddress{{Ip: "127.0.0.1", Port: 5050}}) |
|
a(w, req) |
|
res := w.Result() |
|
defer res.Body.Close() |
|
|
|
if res.StatusCode != http.StatusBadRequest { |
|
t.Errorf("Expects code 400, got %v", res.StatusCode) |
|
} |
|
|
|
} |
|
|
|
func TestPostRequestWithEmptyBody(t *testing.T) { |
|
req := httptest.NewRequest(http.MethodPost, "/placements/request", nil) |
|
w := httptest.NewRecorder() |
|
_, _ = req, w |
|
a := handleRequest([]customtypes.PartnersAddress{{Ip: "127.0.0.1", Port: 5050}}) |
|
a(w, req) |
|
res := w.Result() |
|
defer res.Body.Close() |
|
|
|
if res.StatusCode != http.StatusBadRequest { |
|
t.Errorf("Expects code 400, got %v", res.StatusCode) |
|
} |
|
} |
|
|
|
func TestPostRequestWithRightBody(t *testing.T) { |
|
file, err := os.ReadFile("../../internal/curl_requests/simple.json") |
|
if err != nil { |
|
log.Fatal(err) |
|
} |
|
|
|
req := httptest.NewRequest(http.MethodPost, "/placements/request", bytes.NewBuffer(file)) |
|
req.Header.Set("Content-Type", "application/json") |
|
w := httptest.NewRecorder() |
|
_, _ = req, w |
|
a := handleRequest([]customtypes.PartnersAddress{{Ip: "127.0.0.1", Port: 5059}}) |
|
a(w, req) |
|
res := w.Result() |
|
defer res.Body.Close() |
|
|
|
data, err := ioutil.ReadAll(res.Body) |
|
if err != nil { |
|
t.Errorf("expected error to be nil got %v", err) |
|
} |
|
|
|
if res.StatusCode != http.StatusOK { |
|
t.Errorf("Expects code 200, got %v", res.StatusCode) |
|
} |
|
|
|
var d req_types.SuccesResponse |
|
if json.Unmarshal(data, &d) != nil { |
|
t.Log("Error parsing json response") |
|
} |
|
|
|
if d.Imp[0].Title != "bestoption" { |
|
t.Errorf("Wants title `bestoption`, got %v", d.Imp[0].Title) |
|
} |
|
|
|
}
|
|
|