package provider

import (
	"testing"

	"github.com/docker/docker/api/types"
	"github.com/yusing/go-proxy/internal/docker"
	. "github.com/yusing/go-proxy/internal/utils/testing"
	"gopkg.in/yaml.v3"

	_ "embed"
)

//go:embed docker_labels.yaml
var testDockerLabelsYAML []byte

func TestParseDockerLabels(t *testing.T) {
	var provider DockerProvider

	labels := make(map[string]string)
	ExpectNoError(t, yaml.Unmarshal(testDockerLabelsYAML, &labels))

	routes, err := provider.routesFromContainerLabels(
		docker.FromDocker(&types.Container{
			Names:  []string{"container"},
			Labels: labels,
			State:  "running",
			Ports: []types.Port{
				{Type: "tcp", PrivatePort: 1234, PublicPort: 1234},
			},
		}, "/var/run/docker.sock"),
	)
	ExpectNoError(t, err)
	ExpectTrue(t, routes.Contains("app"))
	ExpectTrue(t, routes.Contains("app1"))
}