test/test_config_resolver.rb in prefab-cloud-ruby-0.3.0 vs test/test_config_resolver.rb in prefab-cloud-ruby-0.4.0
- old
+ new
@@ -16,11 +16,10 @@
@loader.stub :calc_config, loaded_values do
@resolver = Prefab::ConfigResolver.new(MockBaseClient.new, @loader)
assert_equal "value_none", @resolver.get("key")
-
@resolverA = resolver_for_namespace("projectA", @loader)
assert_equal "valueA", @resolverA.get("key")
@resolverB = resolver_for_namespace("projectB", @loader)
assert_equal "valueB", @resolverB.get("key")
@@ -32,9 +31,74 @@
assert_equal "projectB.subprojectX", @resolverBX.get("key")
@resolverBX = resolver_for_namespace("projectC", @loader)
assert_equal "value_none", @resolverBX.get("key")
assert_nil @resolverBX.get("key_that_doesnt_exist")
+ end
+ end
+
+ def test_starts_with_ns
+ @loader = MockConfigLoader.new
+ @loader.stub :calc_config, {} do
+ resolver = Prefab::ConfigResolver.new(MockBaseClient.new, @loader)
+ assert resolver.send(:starts_with_ns?, "", "a")
+ assert resolver.send(:starts_with_ns?, "a", "a")
+ assert resolver.send(:starts_with_ns?, "a", "a.b")
+ assert !resolver.send(:starts_with_ns?, "a.b", "a")
+
+ assert resolver.send(:starts_with_ns?, "corp", "corp.proj.proja")
+ assert resolver.send(:starts_with_ns?, "corp.proj", "corp.proj.proja")
+ assert resolver.send(:starts_with_ns?, "corp.proj.proja", "corp.proj.proja")
+ assert !resolver.send(:starts_with_ns?, "corp.proj.projb", "corp.proj.proja")
+
+ # corp:a:b is not a real delimited namespace
+ assert !resolver.send(:starts_with_ns?, "corp", "corp:a:b")
+ assert resolver.send(:starts_with_ns?, "foo", "foo.baz")
+ assert resolver.send(:starts_with_ns?, "foo.baz", "foo.baz")
+ assert !resolver.send(:starts_with_ns?, "foo.baz", "foo.bazz")
+ end
+ end
+
+ # colons are not allowed in keys, but verify behavior anyway
+ def test_keys_with_colons
+ @loader = MockConfigLoader.new
+ loaded_values = {
+ "Key:With:Colons" => Prefab::ConfigValue.new(string: "value"),
+ "proj:apikey" => Prefab::ConfigValue.new(string: "v2")
+ }
+
+ @loader.stub :calc_config, loaded_values do
+
+ r = resolver_for_namespace("foo", @loader)
+ assert_nil r.get("apikey")
+
+ r = resolver_for_namespace("proj", @loader)
+ assert_equal "v2", r.get("apikey")
+
+ r = resolver_for_namespace("", @loader)
+ assert_nil r.get("apikey")
+
+
+ @resolverKeyWith = resolver_for_namespace("Ket:With", @loader)
+ assert_nil @resolverKeyWith.get("Colons")
+ assert_nil @resolverKeyWith.get("With:Colons")
+ assert_nil @resolverKeyWith.get("Key:With:Colons")
+
+ @resolverKeyWithExtra = resolver_for_namespace("Key:With:Extra", @loader)
+ puts @resolverKeyWithExtra.to_s
+ assert_nil @resolverKeyWithExtra.get("Colons")
+ assert_nil @resolverKeyWithExtra.get("With:Colons")
+ assert_nil @resolverKeyWithExtra.get("Key:With:Colons")
+
+ @resolverKey = resolver_for_namespace("Key", @loader)
+ assert_equal "value", @resolverKey.get("With:Colons")
+ assert_nil @resolverKey.get("Colons")
+ assert_nil @resolverKey.get("Key:With:Colons")
+
+ @resolverWithProperlySegmentedNamespace = resolver_for_namespace("Key.With.Extra", @loader)
+ assert_nil @resolverWithProperlySegmentedNamespace.get("Colons")
+ assert_equal "value", @resolverWithProperlySegmentedNamespace.get("With:Colons")
+ assert_nil @resolverWithProperlySegmentedNamespace.get("Key:With:Colons")
end
end
def resolver_for_namespace(namespace, loader)
Prefab::ConfigResolver.new(MockBaseClient.new(namespace: namespace), loader)