package catalogconsumerauthority

import (
	"testing"

	consumerv1 "github.com/pingcap-inc/nexuscrm-contract/pkg/catalog/consumerv1"
	layoutauthoringv1 "github.com/pingcap-inc/nexuscrm-contract/pkg/runtime/layoutauthoringv1"
)

func TestConsumerCapabilityClassificationIsIndependentOfWorkload(t *testing.T) {
	capability := consumerv1.AppMetadataV2CapabilityName
	if !IsConsumerCapability(capability) {
		t.Fatalf("known Catalog capability %q was not classified", capability)
	}
	if err := ValidateConsumerGrant(ConsumerGrant{
		AuthorizedWorkloadID: "workload\x01invalid",
		CapabilityID:         capability,
	}); err == nil {
		t.Fatal("malformed workload grant was accepted")
	}
	if !IsConsumerCapability(capability) {
		t.Fatal("workload validation changed capability classification")
	}
}

func TestLayoutAuthoringIsAClosedCatalogConsumerCapability(t *testing.T) {
	if !IsConsumerCapability(layoutauthoringv1.CapabilityName) {
		t.Fatalf("Layout authoring capability %q was not classified", layoutauthoringv1.CapabilityName)
	}
	if err := ValidateConsumerGrant(ConsumerGrant{
		AuthorizedWorkloadID: "runtime-layout-worker",
		CapabilityID:         layoutauthoringv1.CapabilityName,
	}); err != nil {
		t.Fatalf("Layout authoring consumer grant was rejected: %v", err)
	}
}
