From b90d8881eb4293fb7888216f3d832698755996d6 Mon Sep 17 00:00:00 2001 From: Mary Dickson Date: Mon, 27 Apr 2026 15:11:47 -0700 Subject: [PATCH 1/3] feat(sdk): add shorthand enum constants for policy types Add readable constant aliases for verbose proto enum names using the source-file codegen pattern (ADR DSPX-2594). Developers can now write: condition.Operator = policy.OperatorIn group.BooleanOperator = policy.BooleanAnd attr.Rule = policy.RuleHierarchy Instead of: condition.Operator = policy.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN Constants covered: - OperatorIn, OperatorNotIn, OperatorInContains (SubjectMappingOperatorEnum) - BooleanAnd, BooleanOr (ConditionBooleanTypeEnum) - RuleAllOf, RuleAnyOf, RuleHierarchy (AttributeRuleTypeEnum) - StateActive, StateInactive, StateAny (ActiveStateEnum) Resolves: opentdf/platform#3338 Co-Authored-By: Claude Opus 4.6 (1M context) --- protocol/codegen/main.go | 6 +++ protocol/go/internal/policy/enums.go | 61 ++++++++++++++++++++++ protocol/go/internal/policy/enums_test.go | 32 ++++++++++++ protocol/go/policy/enums.gen.go | 62 +++++++++++++++++++++++ 4 files changed, 161 insertions(+) create mode 100644 protocol/go/internal/policy/enums.go create mode 100644 protocol/go/internal/policy/enums_test.go create mode 100644 protocol/go/policy/enums.gen.go 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..c8ddeea6c2 --- /dev/null +++ b/protocol/go/internal/policy/enums_test.go @@ -0,0 +1,32 @@ +package policy + +import ( + "testing" + + "github.com/opentdf/platform/protocol/go/common" + policyproto "github.com/opentdf/platform/protocol/go/policy" + "github.com/stretchr/testify/assert" +) + +func TestOperatorConstants(t *testing.T) { + assert.Equal(t, policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN, OperatorIn) + assert.Equal(t, policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN, OperatorNotIn) + assert.Equal(t, policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS, OperatorInContains) +} + +func TestBooleanConstants(t *testing.T) { + assert.Equal(t, policyproto.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_AND, BooleanAnd) + assert.Equal(t, policyproto.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_OR, BooleanOr) +} + +func TestRuleConstants(t *testing.T) { + assert.Equal(t, policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, RuleAllOf) + assert.Equal(t, policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF, RuleAnyOf) + assert.Equal(t, policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY, RuleHierarchy) +} + +func TestStateConstants(t *testing.T) { + assert.Equal(t, common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, StateActive) + assert.Equal(t, common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, StateInactive) + assert.Equal(t, common.ActiveStateEnum_ACTIVE_STATE_ENUM_ANY, StateAny) +} 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 +) From 327992961b842edb92a89e718675bd2a9a769f9a Mon Sep 17 00:00:00 2001 From: Mary Dickson Date: Mon, 27 Apr 2026 15:18:15 -0700 Subject: [PATCH 2/3] chore(sdk): go mod tidy for protocol/go (testify dependency) The new enums_test.go in protocol/go/internal/policy/ imports github.com/stretchr/testify, which needs to be in the module's go.mod. Co-Authored-By: Claude Opus 4.6 (1M context) --- protocol/go/go.mod | 6 ++++++ protocol/go/go.sum | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/protocol/go/go.mod b/protocol/go/go.mod index 03c0ad01c8..7204efec0f 100644 --- a/protocol/go/go.mod +++ b/protocol/go/go.mod @@ -8,14 +8,20 @@ require ( buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.1-20240508200655-46a4cf4ba109.1 connectrpc.com/connect v1.19.1 github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 + github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.10 ) require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/protocol/go/go.sum b/protocol/go/go.sum index a191a9d6dc..37bbbab233 100644 --- a/protocol/go/go.sum +++ b/protocol/go/go.sum @@ -4,6 +4,9 @@ connectrpc.com/connect v1.19.1 h1:R5M57z05+90EfEvCY1b7hBxDVOUl45PrtXtAV2fOC14= connectrpc.com/connect v1.19.1/go.mod h1:tN20fjdGlewnSFeZxLKb0xwIZ6ozc3OQs2hTXy4du9w= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -18,6 +21,16 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= @@ -49,3 +62,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 4d0ce50ee369d460c36e8bedee244e4983d1637f Mon Sep 17 00:00:00 2001 From: Mary Dickson Date: Mon, 27 Apr 2026 15:19:13 -0700 Subject: [PATCH 3/3] fix(sdk): drop testify dependency from enum tests Use stdlib testing patterns consistent with the existing authorization/v2 helper tests. No new dependencies needed. Co-Authored-By: Claude Opus 4.6 (1M context) --- protocol/go/go.mod | 6 --- protocol/go/go.sum | 18 --------- protocol/go/internal/policy/enums_test.go | 45 +++++++++++++++++------ 3 files changed, 33 insertions(+), 36 deletions(-) diff --git a/protocol/go/go.mod b/protocol/go/go.mod index 7204efec0f..03c0ad01c8 100644 --- a/protocol/go/go.mod +++ b/protocol/go/go.mod @@ -8,20 +8,14 @@ require ( buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.1-20240508200655-46a4cf4ba109.1 connectrpc.com/connect v1.19.1 github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 - github.com/stretchr/testify v1.11.1 google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.10 ) require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/kr/text v0.2.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rogpeppe/go-internal v1.14.1 // indirect golang.org/x/net v0.48.0 // indirect golang.org/x/sys v0.39.0 // indirect golang.org/x/text v0.32.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/protocol/go/go.sum b/protocol/go/go.sum index 37bbbab233..a191a9d6dc 100644 --- a/protocol/go/go.sum +++ b/protocol/go/go.sum @@ -4,9 +4,6 @@ connectrpc.com/connect v1.19.1 h1:R5M57z05+90EfEvCY1b7hBxDVOUl45PrtXtAV2fOC14= connectrpc.com/connect v1.19.1/go.mod h1:tN20fjdGlewnSFeZxLKb0xwIZ6ozc3OQs2hTXy4du9w= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -21,16 +18,6 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= @@ -62,8 +49,3 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/protocol/go/internal/policy/enums_test.go b/protocol/go/internal/policy/enums_test.go index c8ddeea6c2..8fa7e37bd3 100644 --- a/protocol/go/internal/policy/enums_test.go +++ b/protocol/go/internal/policy/enums_test.go @@ -5,28 +5,49 @@ import ( "github.com/opentdf/platform/protocol/go/common" policyproto "github.com/opentdf/platform/protocol/go/policy" - "github.com/stretchr/testify/assert" ) func TestOperatorConstants(t *testing.T) { - assert.Equal(t, policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN, OperatorIn) - assert.Equal(t, policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN, OperatorNotIn) - assert.Equal(t, policyproto.SubjectMappingOperatorEnum_SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS, OperatorInContains) + 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) { - assert.Equal(t, policyproto.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_AND, BooleanAnd) - assert.Equal(t, policyproto.ConditionBooleanTypeEnum_CONDITION_BOOLEAN_TYPE_ENUM_OR, BooleanOr) + 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) { - assert.Equal(t, policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, RuleAllOf) - assert.Equal(t, policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF, RuleAnyOf) - assert.Equal(t, policyproto.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY, RuleHierarchy) + 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) { - assert.Equal(t, common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, StateActive) - assert.Equal(t, common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, StateInactive) - assert.Equal(t, common.ActiveStateEnum_ACTIVE_STATE_ENUM_ANY, StateAny) + 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) + } }