Example #1
0
        public async Task get_feature_from_the_store_dont_use_cache_if_isnot_configured()
        {
            var permission = Builders.Permission()
                             .WithManagementPermission()
                             .Build();

            await _fixture.Given
            .AddPermission(permission);

            var defaultRing = Builders.Deployment()
                              .WithName(EsquioConstants.DEFAULT_DEPLOYMENT_NAME)
                              .WithDefault(true)
                              .Build();

            var product = Builders.Product()
                          .WithName("fooproduct")
                          .Build();

            product.Deployments
            .Add(defaultRing);

            var feature = Builders.Feature()
                          .WithName("barfeature")
                          .Build();

            var toggle = Builders.Toggle()
                         .WithType("Esquio.Toggles.EnvironmentToggle,Esquio")
                         .Build();

            var parameter = Builders.Parameter()
                            .WithName("Environments")
                            .WithValue("Development")
                            .WithRingName(defaultRing.Name)
                            .Build();

            toggle.Parameters
            .Add(parameter);

            feature.Toggles
            .Add(toggle);

            product.Features
            .Add(feature);

            await _fixture.Given
            .AddProduct(product);

            var apiKeyValue = "barkey";

            var apiKey = Builders.ApiKey()
                         .WithName("fooname")
                         .Withkey(apiKeyValue)
                         .WithValidTo(DateTime.UtcNow.AddDays(1))
                         .Build();

            await _fixture.Given
            .AddApiKey(apiKey);

            var cache = CreateDefaultCache();
            var store = CreateCachedStore(cache, apiKey: apiKey.Key, useCache: false);

            var featureModel = await store
                               .FindFeatureAsync(feature.Name, product.Name, EsquioConstants.DEFAULT_DEPLOYMENT_NAME);

            featureModel.Name
            .Should()
            .BeEquivalentTo(feature.Name);

            var cacheKey = CacheKeyCreator.GetCacheKey(product.Name, feature.Name, defaultRing.Name, "3.0");

            var entry = await cache.GetStringAsync(cacheKey);

            entry.Should()
            .BeNull();

            await cache.SetStringAsync(cacheKey, "{\"featureName\":\"barfeature\",\"enabled\":false}");

            featureModel = await store
                           .FindFeatureAsync(feature.Name, product.Name, EsquioConstants.DEFAULT_DEPLOYMENT_NAME);

            featureModel.IsEnabled
            .Should().BeFalse();
        }
Example #2
0
        public void CreateTest()
        {
            var baseUrl    = "baseUrl";
            var endPoint   = "dummy";
            var parameters = new Dictionary <string, string> {
                { "key", "value" }, { "キー", "バリュー" }
            };
            var request = new ApiGetRequest(endPoint, parameters);

            Assert.AreEqual("api/baseUrl/dummy?%e3%82%ad%e3%83%bc=%e3%83%90%e3%83%aa%e3%83%a5%e3%83%bc&key=value", CacheKeyCreator.Create(baseUrl, request));
        }