diff --git a/packages/common/lib/src/ld_context.dart b/packages/common/lib/src/ld_context.dart index f9fe912..1cd21b3 100644 --- a/packages/common/lib/src/ld_context.dart +++ b/packages/common/lib/src/ld_context.dart @@ -20,7 +20,7 @@ String _encodeKey(String key) { } bool _validKind(String kind) { - return kind != 'kind' && _kindExp.hasMatch(kind); + return kind != 'kind' && kind != 'multi' && _kindExp.hasMatch(kind); } bool _referenceIs(AttributeReference reference, String value) { diff --git a/packages/common/test/ld_context_test.dart b/packages/common/test/ld_context_test.dart index 48bc3a9..70b534a 100644 --- a/packages/common/test/ld_context_test.dart +++ b/packages/common/test/ld_context_test.dart @@ -52,11 +52,22 @@ void main() { }); group('given invalid kinds', () { - for (var kind in ['', 'kind', '#*%']) { - test('invalid kinds produce invalid contexts', () { + for (var kind in ['', 'kind', 'multi', '#*%']) { + test('kind "$kind" produces an invalid context', () { expect(LDContextBuilder().kind(kind, 'my-key').build().valid, false); }); } + + test('a multi-context containing an individual "multi" kind is invalid', + () { + final context = LDContextBuilder() + .kind('user', 'user-key') + .kind('multi', 'other-key') + .build(); + expect(context.valid, false); + expect(context.canonicalKey, ''); + expect(context.keys, isEmpty); + }); }); test('can get the canonical key for an invalid context', () {