package api

import (
	"strings"
	"testing"
)

func TestHealthcheckString(t *testing.T) {
	h := ContainerProbe{}

	expected := strings.TrimSpace(`Initial Delay (seconds): 0
Timeout (seconds): 0
Period (seconds): 0
Success Threshold: 0
Failure Threshold: 0
Exec Probe: N/A
GRPC Probe: N/A
HTTP GET Probe: N/A
TCP Socket Probe: N/A`)

	if strings.TrimSpace(h.String()) != expected {
		t.Errorf("Expected:\n\n%s\n\nGot:\n\n%s", expected, h.String())
	}

	h.HTTPGet = &HTTPGetAction{
		Path:        "/",
		Port:        80,
		HTTPHeaders: []*KVPair{{Name: "X-DRYCC-IS", Value: "AWESOME"}},
	}

	expected = strings.TrimSpace(`Initial Delay (seconds): 0
Timeout (seconds): 0
Period (seconds): 0
Success Threshold: 0
Failure Threshold: 0
Exec Probe: N/A
GRPC Probe: N/A
HTTP GET Probe: Path="/" Port=80 HTTPHeaders=[X-DRYCC-IS=AWESOME]
TCP Socket Probe: N/A`)

	if strings.TrimSpace(h.String()) != expected {
		t.Errorf("Expected:\n\n%s\n\nGot:\n\n%s", expected, h.String())
	}

	h.Exec = &ExecAction{Command: []string{"echo", "hi"}}
	h.GRPC = &GRPCAction{
		Port:    80,
		Service: "myservice",
	}
	h.TCPSocket = &TCPSocketAction{
		Port: 80,
	}

	expected = strings.TrimSpace(`Initial Delay (seconds): 0
Timeout (seconds): 0
Period (seconds): 0
Success Threshold: 0
Failure Threshold: 0
Exec Probe: Command=[echo hi]
GRPC Probe: Port=80 Service="myservice"
HTTP GET Probe: Path="/" Port=80 HTTPHeaders=[X-DRYCC-IS=AWESOME]
TCP Socket Probe: Port=80`)

	if strings.TrimSpace(h.String()) != expected {
		t.Errorf("Expected:\n\n%s\n\nGot:\n\n%s", expected, h.String())
	}
}
