Skip to content

Commit

Permalink
test(integration/api): ensure Evaluation.Variant returns as expected
Browse files Browse the repository at this point in the history
  • Loading branch information
GeorgeMac committed Jun 28, 2023
1 parent 9c2b4bc commit d8b1e29
Showing 1 changed file with 97 additions and 58 deletions.
155 changes: 97 additions & 58 deletions build/testing/integration/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.flipt.io/flipt/rpc/flipt"
"go.flipt.io/flipt/rpc/flipt/evaluation"
sdk "go.flipt.io/flipt/sdk/go"
)

Expand Down Expand Up @@ -473,88 +474,126 @@ func API(t *testing.T, ctx context.Context, client sdk.SDK, namespace string, au
assert.Equal(t, float32(100), distribution.Rollout)
})

t.Run("Evaluation", func(t *testing.T) {
t.Log(`Successful match.`)
t.Run("Legacy", func(t *testing.T) {
t.Run("Evaluation", func(t *testing.T) {
t.Log(`Successful match.`)

result, err := client.Flipt().Evaluate(ctx, &flipt.EvaluationRequest{
NamespaceKey: namespace,
FlagKey: "test",
EntityId: uuid.Must(uuid.NewV4()).String(),
Context: map[string]string{
"foo": "baz",
"fizz": "bozz",
},
})
require.NoError(t, err)
result, err := client.Flipt().Evaluate(ctx, &flipt.EvaluationRequest{
NamespaceKey: namespace,
FlagKey: "test",
EntityId: uuid.Must(uuid.NewV4()).String(),
Context: map[string]string{
"foo": "baz",
"fizz": "bozz",
},
})
require.NoError(t, err)

require.True(t, result.Match, "Evaluation should have matched.")
assert.Equal(t, "everyone", result.SegmentKey)
assert.Equal(t, "one", result.Value)
assert.Equal(t, flipt.EvaluationReason_MATCH_EVALUATION_REASON, result.Reason)
require.True(t, result.Match, "Evaluation should have matched.")
assert.Equal(t, "everyone", result.SegmentKey)
assert.Equal(t, "one", result.Value)
assert.Equal(t, flipt.EvaluationReason_MATCH_EVALUATION_REASON, result.Reason)

t.Log(`Unsuccessful match.`)
t.Log(`Unsuccessful match.`)

result, err = client.Flipt().Evaluate(ctx, &flipt.EvaluationRequest{
NamespaceKey: namespace,
FlagKey: "test",
EntityId: uuid.Must(uuid.NewV4()).String(),
Context: map[string]string{
"fizz": "buzz",
},
result, err = client.Flipt().Evaluate(ctx, &flipt.EvaluationRequest{
NamespaceKey: namespace,
FlagKey: "test",
EntityId: uuid.Must(uuid.NewV4()).String(),
Context: map[string]string{
"fizz": "buzz",
},
})
require.NoError(t, err)

assert.False(t, result.Match, "Evaluation should not have matched.")
})
require.NoError(t, err)

assert.False(t, result.Match, "Evaluation should not have matched.")
})
t.Run("Batch Evaluation", func(t *testing.T) {
t.Log(`Successful match.`)

t.Run("Batch Evaluation", func(t *testing.T) {
t.Log(`Successful match.`)
results, err := client.Flipt().BatchEvaluate(ctx, &flipt.BatchEvaluationRequest{
NamespaceKey: namespace,
Requests: []*flipt.EvaluationRequest{
{
NamespaceKey: namespace,
FlagKey: "test",
EntityId: uuid.Must(uuid.NewV4()).String(),
Context: map[string]string{
"foo": "baz",
"fizz": "bozz",
},
},
},
})
require.NoError(t, err)

results, err := client.Flipt().BatchEvaluate(ctx, &flipt.BatchEvaluationRequest{
NamespaceKey: namespace,
Requests: []*flipt.EvaluationRequest{
{
require.Len(t, results.Responses, 1)
result := results.Responses[0]

require.True(t, result.Match, "Evaluation should have matched.")
assert.Equal(t, "everyone", result.SegmentKey)
assert.Equal(t, "one", result.Value)
assert.Equal(t, flipt.EvaluationReason_MATCH_EVALUATION_REASON, result.Reason)

t.Log(`Unsuccessful match.`)

results, err = client.Flipt().BatchEvaluate(ctx, &flipt.BatchEvaluationRequest{
NamespaceKey: namespace,
Requests: []*flipt.EvaluationRequest{
{
NamespaceKey: namespace,
FlagKey: "test",
EntityId: uuid.Must(uuid.NewV4()).String(),
Context: map[string]string{
"fizz": "buzz",
},
},
},
})
require.NoError(t, err)

require.Len(t, results.Responses, 1)
result = results.Responses[0]

assert.False(t, result.Match, "Evaluation should not have matched.")
})
})

t.Run("Evaluation", func(t *testing.T) {
t.Run("Variant", func(t *testing.T) {
t.Run("successful match", func(t *testing.T) {
result, err := client.Evaluation().Variant(ctx, &evaluation.EvaluationRequest{
NamespaceKey: namespace,
FlagKey: "test",
EntityId: uuid.Must(uuid.NewV4()).String(),
Context: map[string]string{
"foo": "baz",
"fizz": "bozz",
},
},
},
})
require.NoError(t, err)

require.Len(t, results.Responses, 1)
result := results.Responses[0]
})
require.NoError(t, err)

require.True(t, result.Match, "Evaluation should have matched.")
assert.Equal(t, "everyone", result.SegmentKey)
assert.Equal(t, "one", result.Value)
assert.Equal(t, flipt.EvaluationReason_MATCH_EVALUATION_REASON, result.Reason)

t.Log(`Unsuccessful match.`)
require.True(t, result.Match, "Evaluation should have matched.")
assert.Equal(t, "everyone", result.SegmentKey)
assert.Equal(t, "one", result.VariantKey)
assert.Equal(t, flipt.EvaluationReason_MATCH_EVALUATION_REASON, result.Reason)
})

results, err = client.Flipt().BatchEvaluate(ctx, &flipt.BatchEvaluationRequest{
NamespaceKey: namespace,
Requests: []*flipt.EvaluationRequest{
{
t.Run("no match", func(t *testing.T) {
result, err := client.Evaluation().Variant(ctx, &evaluation.EvaluationRequest{
NamespaceKey: namespace,
FlagKey: "test",
EntityId: uuid.Must(uuid.NewV4()).String(),
Context: map[string]string{
"fizz": "buzz",
},
},
},
})
require.NoError(t, err)
})
require.NoError(t, err)

require.Len(t, results.Responses, 1)
result = results.Responses[0]

assert.False(t, result.Match, "Evaluation should not have matched.")
assert.False(t, result.Match, "Evaluation should not have matched.")
})
})
})

t.Run("Delete", func(t *testing.T) {
Expand Down

0 comments on commit d8b1e29

Please sign in to comment.