//go:build !functional

package sarama

import (
	"errors"
	"testing"
)

var (
	consumerMetadataResponseError = []byte{
		0x00, 0x0E,
		0x00, 0x00, 0x00, 0x00,
		0x00, 0x00,
		0x00, 0x00, 0x00, 0x00,
	}

	consumerMetadataResponseSuccess = []byte{
		0x00, 0x00,
		0x00, 0x00, 0x00, 0xAB,
		0x00, 0x03, 'f', 'o', 'o',
		0x00, 0x00, 0xCC, 0xDD,
	}
)

func TestConsumerMetadataResponseError(t *testing.T) {
	response := &ConsumerMetadataResponse{Err: ErrOffsetsLoadInProgress}
	testEncodable(t, "", response, consumerMetadataResponseError)

	decodedResp := &ConsumerMetadataResponse{}
	if err := versionedDecode(consumerMetadataResponseError, decodedResp, 0, nil); err != nil {
		t.Error("could not decode: ", err)
	}

	if !errors.Is(decodedResp.Err, ErrOffsetsLoadInProgress) {
		t.Errorf("got %s, want %s", decodedResp.Err, ErrOffsetsLoadInProgress)
	}
}

func TestConsumerMetadataResponseSuccess(t *testing.T) {
	broker := NewBroker("foo:52445")
	broker.id = 0xAB
	response := ConsumerMetadataResponse{
		Coordinator:     broker,
		CoordinatorID:   0xAB,
		CoordinatorHost: "foo",
		CoordinatorPort: 0xCCDD,
		Err:             ErrNoError,
	}
	testResponse(t, "success", &response, consumerMetadataResponseSuccess)
}
