Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 33 additions & 16 deletions sdktests/common_tests_tags.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func (c CommonTagsTests) Run(t *ldtest.T) {
}

t.Run("stream requests", func(t *ldtest.T) {
for _, p := range c.makeValidTagsTestParams() {
for _, p := range c.makeValidTagsTestParams(t) {
t.Run(p.description, func(t *ldtest.T) {
tags := p.tags
dataSource := NewSDKDataSource(t, nil, DataSourceOptionStreaming())
Expand All @@ -74,7 +74,7 @@ func (c CommonTagsTests) Run(t *ldtest.T) {

if t.Capabilities().HasAny(servicedef.CapabilityClientSide, servicedef.CapabilityServerSidePolling) {
t.Run("poll requests", func(t *ldtest.T) {
for _, p := range c.makeValidTagsTestParams() {
for _, p := range c.makeValidTagsTestParams(t) {
t.Run(p.description, func(t *ldtest.T) {
tags := p.tags
dataSource := NewSDKDataSource(t, nil, DataSourceOptionPolling())
Expand All @@ -89,7 +89,7 @@ func (c CommonTagsTests) Run(t *ldtest.T) {

t.Run("event posts", func(t *ldtest.T) {
dataSource := NewSDKDataSource(t, nil)
for _, p := range c.makeValidTagsTestParams() {
for _, p := range c.makeValidTagsTestParams(t) {
t.Run(p.description, func(t *ldtest.T) {
tags := p.tags
events := NewSDKEventSink(t)
Expand Down Expand Up @@ -146,20 +146,31 @@ func (c CommonTagsTests) Run(t *ldtest.T) {
},
expectedHeaderValue: tagNameAppID + "/ok " + tagNameAppVersion + "/ok",
})
if t.Capabilities().Has(servicedef.CapabilityAutoEnvAttributes) {
params = append(params, tagsTestParams{
tags: servicedef.SDKConfigTagsParams{
ApplicationID: o.Some(badString),
ApplicationVersion: o.Some("iShouldntBeSeenBecauseInvalidIDTriggersFallback"),
},
unexpectedHeaderValue: tagNameAppVersion + "/iShouldntBeSeenBecauseInvalidIDTriggersFallback",
})
} else {
params = append(params, tagsTestParams{
tags: servicedef.SDKConfigTagsParams{
ApplicationID: o.Some(badString),
ApplicationVersion: o.Some("ok"),
},
expectedHeaderValue: tagNameAppVersion + "/ok",
})
}

params = append(params, tagsTestParams{
tags: servicedef.SDKConfigTagsParams{
ApplicationID: o.Some("ok"),
ApplicationVersion: o.Some(badString),
},
expectedHeaderValue: tagNameAppID + "/ok",
})
params = append(params, tagsTestParams{
tags: servicedef.SDKConfigTagsParams{
ApplicationID: o.Some(badString),
ApplicationVersion: o.Some("iShouldntBeSeenBecauseInvalidIDTriggersFallback"),
},
unexpectedHeaderValue: "iShouldntBeSeenBecauseInvalidIDTriggersFallback",
})
}
runPermutations(t, params)
})
Expand Down Expand Up @@ -198,13 +209,19 @@ func (c CommonTagsTests) Run(t *ldtest.T) {
})
}

func (c CommonTagsTests) makeValidTagsTestParams() []tagsTestParams {
func (c CommonTagsTests) makeValidTagsTestParams(t *ldtest.T) []tagsTestParams {
ret := make([]tagsTestParams, 0)
values := []o.Maybe[string]{
// Note that on *some* platforms, there's a distinction between "undefined" and "empty string".
// We test both, to ensure that empty strings are correctly ignored in terms of the header.
o.None[string](),
o.Some(""), // empty string
values := make([]o.Maybe[string], 0)

// The auto env spec does not allow for specifying only an ID or a version.
// Therefore, we exclude these "empty" options.
if !t.Capabilities().Has(servicedef.CapabilityAutoEnvAttributes) {
values = []o.Maybe[string]{
// Note that on *some* platforms, there's a distinction between "undefined" and "empty string".
// We test both, to ensure that empty strings are correctly ignored in terms of the header.
o.None[string](),
o.Some(""), // empty string
}
}

// Generate test to use all valid characters
Expand Down
2 changes: 1 addition & 1 deletion sdktests/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ func inferDefaultFromFlag(sdkData mockld.SDKData, flagKey string) ldvalue.Value
func makeCharactersNotInAllowedCharsetString(allowed string) []rune {
var badChars []rune
badChars = append(badChars, '\t', '\n', '\r') // don't bother including every control character
for ch := 32; ch <= 127; ch++ {
for ch := 33; ch <= 127; ch++ {
if strings.ContainsRune(allowed, rune(ch)) {
continue
}
Expand Down