diff --git a/protocol/codegen/main.go b/protocol/codegen/main.go index 623ed87b57..fc3da86b35 100644 --- a/protocol/codegen/main.go +++ b/protocol/codegen/main.go @@ -37,6 +37,12 @@ var mappings = []helperMapping{ ProtoImportPath: "github.com/opentdf/platform/protocol/go/authorization/v2", ProtoImportAlias: "authorizationv2", }, + { + Source: "policy", + Target: "policy", + ProtoImportPath: "github.com/opentdf/platform/protocol/go/policy", + ProtoImportAlias: "policy", + }, } const generatedHeader = "// Code generated by protocol/codegen. DO NOT EDIT.\n\n" diff --git a/protocol/go/internal/policy/enums.go b/protocol/go/internal/policy/enums.go new file mode 100644 index 0000000000..6ed689d857 --- /dev/null +++ b/protocol/go/internal/policy/enums.go @@ -0,0 +1,61 @@ +package policy + +import ( + "github.com/opentdf/platform/protocol/go/common" + policy "github.com/opentdf/platform/protocol/go/policy" +) + +// Shorthand constants for SubjectMappingOperatorEnum. +// +// Example: +// +// condition := &policy.Condition{ +// SubjectExternalSelectorValue: ".email", +// Operator: policy.OperatorInContains, +// SubjectExternalValues: []string{"@example.com"}, +// } +const ( + OperatorIn = policy.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN + OperatorNotIn = policy.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN + OperatorInContains = policy.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS +) + +// Shorthand constants for ConditionBooleanTypeEnum. +// +// Example: +// +// group := &policy.ConditionGroup{ +// BooleanOperator: policy.BooleanAnd, +// Conditions: conditions, +// } +const ( + BooleanAnd = policy.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_AND + BooleanOr = policy.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_OR +) + +// Shorthand constants for AttributeRuleTypeEnum. +// +// Example: +// +// req := &attributes.CreateAttributeRequest{ +// Name: "clearance", +// Rule: policy.RuleHierarchy, +// } +const ( + RuleAllOf = policy.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF + RuleAnyOf = policy.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF + RuleHierarchy = policy.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY +) + +// Shorthand constants for ActiveStateEnum (from the common package). +// +// Example: +// +// req := &attributes.ListAttributesRequest{ +// State: policy.StateActive, +// } +const ( + StateActive = common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE + StateInactive = common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE + StateAny = common.ActiveStateEnum_ACTIVE_STATE_ENUM_ANY +) diff --git a/protocol/go/internal/policy/enums_test.go b/protocol/go/internal/policy/enums_test.go new file mode 100644 index 0000000000..8fa7e37bd3 --- /dev/null +++ b/protocol/go/internal/policy/enums_test.go @@ -0,0 +1,53 @@ +package policy + +import ( + "testing" + + "github.com/opentdf/platform/protocol/go/common" + policyproto "github.com/opentdf/platform/protocol/go/policy" +) + +func TestOperatorConstants(t *testing.T) { + if OperatorIn != policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN { + t.Errorf("OperatorIn = %d, want %d", OperatorIn, policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN) + } + if OperatorNotIn != policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN { + t.Errorf("OperatorNotIn = %d, want %d", OperatorNotIn, policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN) + } + if OperatorInContains != policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS { + t.Errorf("OperatorInContains = %d, want %d", OperatorInContains, policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS) + } +} + +func TestBooleanConstants(t *testing.T) { + if BooleanAnd != policyproto.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_AND { + t.Errorf("BooleanAnd = %d, want %d", BooleanAnd, policyproto.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_AND) + } + if BooleanOr != policyproto.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_OR { + t.Errorf("BooleanOr = %d, want %d", BooleanOr, policyproto.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_OR) + } +} + +func TestRuleConstants(t *testing.T) { + if RuleAllOf != policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF { + t.Errorf("RuleAllOf = %d, want %d", RuleAllOf, policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF) + } + if RuleAnyOf != policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF { + t.Errorf("RuleAnyOf = %d, want %d", RuleAnyOf, policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF) + } + if RuleHierarchy != policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY { + t.Errorf("RuleHierarchy = %d, want %d", RuleHierarchy, policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY) + } +} + +func TestStateConstants(t *testing.T) { + if StateActive != common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE { + t.Errorf("StateActive = %d, want %d", StateActive, common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE) + } + if StateInactive != common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE { + t.Errorf("StateInactive = %d, want %d", StateInactive, common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE) + } + if StateAny != common.ActiveStateEnum_ACTIVE_STATE_ENUM_ANY { + t.Errorf("StateAny = %d, want %d", StateAny, common.ActiveStateEnum_ACTIVE_STATE_ENUM_ANY) + } +} diff --git a/protocol/go/policy/enums.gen.go b/protocol/go/policy/enums.gen.go new file mode 100644 index 0000000000..87bc32e7c8 --- /dev/null +++ b/protocol/go/policy/enums.gen.go @@ -0,0 +1,62 @@ +// Code generated by protocol/codegen. DO NOT EDIT. + +package policy + +import ( + "github.com/opentdf/platform/protocol/go/common" +) + +// Shorthand constants for SubjectMappingOperatorEnum. +// +// Example: +// +// condition := &Condition{ +// SubjectExternalSelectorValue: ".email", +// Operator: OperatorInContains, +// SubjectExternalValues: []string{"@example.com"}, +// } +const ( + OperatorIn = SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN + OperatorNotIn = SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN + OperatorInContains = SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS +) + +// Shorthand constants for ConditionBooleanTypeEnum. +// +// Example: +// +// group := &ConditionGroup{ +// BooleanOperator: BooleanAnd, +// Conditions: conditions, +// } +const ( + BooleanAnd = ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_AND + BooleanOr = ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_OR +) + +// Shorthand constants for AttributeRuleTypeEnum. +// +// Example: +// +// req := &attributes.CreateAttributeRequest{ +// Name: "clearance", +// Rule: RuleHierarchy, +// } +const ( + RuleAllOf = AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF + RuleAnyOf = AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF + RuleHierarchy = AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY +) + +// Shorthand constants for ActiveStateEnum (from the common package). +// +// Example: +// +// req := &attributes.ListAttributesRequest{ +// State: StateActive, +// } +const ( + StateActive = common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE + StateInactive = common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE + StateAny = common.ActiveStateEnum_ACTIVE_STATE_ENUM_ANY +)