package billing

// import (
// 	"fmt"
// 	"testing"

// 	"github.com/pingcap/dbaas/billing/api/model"
// 	"github.com/pingcap/errors"
// 	"github.com/stretchr/testify/assert"
// )

// func TestNewService(t *testing.T) {
// 	s := NewService("http://127.0.0.1:8888", "", "", "", "")
// 	assert.NotNil(t, s)
// }

// func TestSubmit(t *testing.T) {
// 	transport := HttpTransport{authenticator: &AllowAll{}}
// 	transport.httpClient = &FakeHttpClient{StatusCode: 200, Body: []byte{1, 2, 3}}
// 	r, err := transport.Submit("", "get", nil)
// 	assert.Nil(t, err)
// 	assert.Equal(t, 3, len(r))
// 	assert.Equal(t, uint8(2), r[1])

// 	r, err = transport.Submit(string(rune(0x7f)), "get", nil)
// 	assert.NotNil(t, err)
// 	assert.Nil(t, r)
// 	transport.authenticator = &DeniedAll{}
// 	r, err = transport.Submit("", "get", nil)
// 	assert.NotNil(t, err)
// 	assert.Nil(t, r)
// 	transport.authenticator = &AllowAll{}
// 	transport.httpClient = &FakeHttpClient{StatusCode: 503, Body: []byte{1, 2, 3}}
// 	r, err = transport.Submit("", "get", nil)
// 	assert.NotNil(t, err)
// 	assert.Nil(t, r)
// 	transport.httpClient = &FakeHttpClient{Error: errors.New("fake")}
// 	r, err = transport.Submit("", "get", nil)
// 	assert.NotNil(t, err)
// 	assert.Nil(t, r)
// 	transport.httpClient = &FakeHttpClient{ReaderError: errors.New("fake")}
// 	r, err = transport.Submit("", "get", nil)
// 	assert.NotNil(t, err)
// 	assert.Nil(t, r)
// }

// var cli = &client{}

// func getTransport() *RecordParameterTransport {
// 	cli.baseURL = "http://127.0.0.1:8888"
// 	tr := &RecordParameterTransport{}
// 	cli.transport = tr
// 	return tr
// }

// func TestClient_SendInvoiceNow(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.SendInvoiceNow("1", 2)
// 	assert.Nil(t, err)
// 	assert.Equal(t, "POST", tr.Method)
// 	assert.Equal(t, fmt.Sprintf("%s/invoices?end=%d", cli.baseAPIPathForCustomer("1"), 2), tr.ApiPath)
// }

// func TestClient_GetHttpResultAsString(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.GetHttpResultAsString("GET", "", []byte{})
// 	assert.Nil(t, err)
// 	assert.Equal(t, "GET", tr.Method)
// 	cli.transport = &FakeTransport{Error: errors.New("fake")}
// 	_, err = cli.GetHttpResultAsString("GET", "", []byte{})
// 	assert.NotNil(t, err)
// }

// func TestClient_UpdateCustomer(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.UpdateCustomer("1", &model.Customer{})
// 	assert.Nil(t, err)
// 	assert.Equal(t, "PUT", tr.Method)
// }

// func TestClient_SetupIntent(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.SetupIntent("1")
// 	assert.Nil(t, err)
// 	assert.Equal(t, "POST", tr.Method)
// }

// func TestClient_ListPaymentMethods(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.ListPaymentMethods("1", Pagination{})
// 	assert.Nil(t, err)
// 	assert.Equal(t, "GET", tr.Method)
// }
// func TestClient_DeletePaymentMethod(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.DeletePaymentMethod("1", "1")
// 	assert.Nil(t, err)
// 	assert.Equal(t, "DELETE", tr.Method)
// }

// func TestClient_UpdatePaymentMethod(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.UpdatePaymentMethod("1", "1", &model.PaymentMethod{})
// 	assert.Nil(t, err)
// 	assert.Equal(t, "PUT", tr.Method)
// }
// func TestClient_ListInvoices(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.ListInvoices("1", Pagination{})
// 	assert.Nil(t, err)
// 	assert.Equal(t, "GET", tr.Method)
// }
// func TestClient_GetCustomer(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.GetCustomer("1")
// 	assert.Nil(t, err)
// 	assert.Equal(t, "GET", tr.Method)
// }

// func TestClient_GetCurrentBillingCycle(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.GetCurrentBillingCycle("1")
// 	assert.Nil(t, err)
// 	assert.Equal(t, "GET", tr.Method)
// }
// func TestClient_GetTrialCredit(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.GetTrialCredit("1")
// 	assert.Nil(t, err)
// 	assert.Equal(t, "GET", tr.Method)
// }
// func TestClient_GetNodeUsageFee(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.GetNodeUsageFee("1", 1, 2)
// 	assert.Nil(t, err)
// 	assert.Equal(t, "GET", tr.Method)
// }

// func TestClient_GetCloudUsageFee(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.GetCloudUsageFee("1", 1, 2)
// 	assert.Nil(t, err)
// 	assert.Equal(t, "GET", tr.Method)
// }

// func TestClient_ListCredits(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.ListCredits("1", Pagination{})
// 	assert.Nil(t, err)
// 	assert.Equal(t, "GET", tr.Method)
// }

// func TestClient_AddCredit(t *testing.T) {
// 	tr := getTransport()
// 	_, err := cli.AddCredit("1", &model.Credit{})
// 	assert.Nil(t, err)
// 	assert.Equal(t, "POST", tr.Method)

// 	cli.transport = &FakeTransport{Data: []byte("{")}
// 	_, err = cli.AddCredit("1", &model.Credit{})
// 	assert.NotNil(t, err)

// 	cli.transport = &FakeTransport{Error: errors.New("fake")}
// 	_, err = cli.AddCredit("1", &model.Credit{})
// 	assert.NotNil(t, err)
// }

// // func TestClient_ListHeartbeats(t *testing.T) {
// // 	tr := getTransport()
// // 	_, err := cli.ListHeartbeats("1", Pagination{})
// // 	assert.Nil(t, err)
// // 	assert.Equal(t, "GET", tr.Method)

// // 	cli.transport = &FakeTransport{Error: errors.New("fake")}
// // 	_, err = cli.ListHeartbeats("1", Pagination{})
// // 	assert.NotNil(t, err)
// // }

// func TestAuth0Authenticator_Auth(t *testing.T) {
// 	a := Auth0Authenticator{}
// 	assert.NotNil(t, a.Auth(nil))
// }
