package util

import (
	"io/ioutil"
	"net/http"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestRequest(t *testing.T) {
	resp, err := (&http.Client{}).Get("https://tcms.pingcap.net/ping")
	if assert.NoError(t, err) {
		assert.Equal(t, http.StatusOK, resp.StatusCode)
		b, err := ioutil.ReadAll(resp.Body)
		defer resp.Body.Close()
		assert.NoError(t, err)
		assert.Equal(t, "pong", string(b))
	}

	assert.Contains(t, resp.Header.Get("Alt-Svc"), "h3")

	resp, err = GetHTTP3Client().Get("https://tcms.pingcap.net/ping")
	if assert.NoError(t, err) {
		assert.Equal(t, http.StatusOK, resp.StatusCode)
		b, err := ioutil.ReadAll(resp.Body)
		defer resp.Body.Close()
		assert.NoError(t, err)
		assert.Equal(t, "pong", string(b))
		assert.Equal(t, "HTTP/3", resp.Proto)
	}

	resp, err = GetHTTP3Client().Get("http://172.16.4.180:30006/ping")
	assert.Error(t, err)

	resp, err = (&http.Client{}).Get("http://172.16.4.180:30006/ping")
	if assert.NoError(t, err) {
		assert.Equal(t, http.StatusOK, resp.StatusCode)
		b, err := ioutil.ReadAll(resp.Body)
		defer resp.Body.Close()
		assert.NoError(t, err)
		assert.Equal(t, "pong", string(b))
		assert.NotEqual(t, "HTTP/3", resp.Proto)
	}
}
