Example #1
0
        public void WhenIGetAFeatureWithAHostnameOverride_ThenTheFeatureIsRetrieved()
        {
            var application = new Data.Entities.Application {
                Name = "TestApplication"
            };

            new CreateApplicationFake().Execute(application);
            var feature = new Data.Entities.Feature {
                ApplicationId = application.ApplicationId, Name = "MyTestFeature"
            };

            new CreateFeatureFake().Execute(feature);

            new CreateFeatureOverrideFake().Execute(new Data.Entities.FeatureOverride {
                FeatureId = feature.FeatureId, Hostname = Dns.GetHostName(), IsEnabled = true
            });

            var response = _browser.Get("/api/feature", with =>
            {
                with.Header("Accept", "application/json");
                with.Query("application", application.Name);
                with.Query("feature", feature.Name);
            });

            var result = JsonConvert.DeserializeObject <Contracts.Feature>(response.Body.AsString());

            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
            Assert.That(result.FeatureOverrides.Any(f => f.FeatureId == feature.FeatureId && f.IsEnabled), Is.True);
        }
Example #2
0
        public void WhenIPutAResource_ThenTheResourceIsUpdatedAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application {
                ApplicationId = 1, Name = "TestApplication1"
            };

            _createApplication.Execute(application);

            var locale        = new GetAllLocales().Execute()[0].ToContract();
            var resourceModel = GetResourceModel(locale, "Test", "Test", "Test", application.ToContract());

            Post(resourceModel);

            var resource = _getResource.Execute(application.Name, "Test", "Test", locale.IsoCode);

            resourceModel       = resource.ToContract();
            resourceModel.Value = "Ponies";

            Put(resourceModel);

            resource = _getResource.Execute(application.Name, "Test", "Test", locale.IsoCode);
            Assert.That(resource.Value, Is.EqualTo("Ponies"));

            _bootstrapper
            .Resolve <IMockClient>()
            .Received()
            .updateResource(Arg.Any <dynamic>());
        }
Example #3
0
        public void WhenIPostAFeature_ThenICanGetItViaHttpAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application {
                ApplicationId = 1, Name = "TestApplication1"
            };

            _createApplication.Execute(application);

            var feature = GetFeatureModel("MySuperCoolFeature1", _getApplication.Execute(application.Name).ToContract());

            Post(feature);

            var response = _browser.Get("/api/feature", with =>
            {
                with.Header("Accept", "application/json");
                with.Query("application", application.Name);
                with.Query("feature", "MySuperCoolFeature1");
            });

            var result = JsonConvert.DeserializeObject <Contracts.Feature>(response.Body.AsString());

            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
            Assert.That(result.IsEnabled, Is.True);

            _testBootstrapper
            .Resolve <IMockClient>()
            .Received()
            .addFeature(Arg.Any <dynamic>());
        }
Example #4
0
        public void WhenIPutAFeature_ThenTheFeatureIsUpdatedAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application {
                ApplicationId = 1, Name = "TestApplication1"
            };

            _createApplication.Execute(application);

            var featureModel = GetFeatureModel("MySuperCoolFeature1", _getApplication.Execute(application.Name).ToContract());

            Post(featureModel);

            var feature = _getFeature.Execute("MySuperCoolFeature1", application.Name);

            featureModel      = feature.ToContract();
            featureModel.Name = "Ponies";

            Put(featureModel);

            feature = _getFeature.Execute("MySuperCoolFeature1", application.Name);
            Assert.That(feature, Is.Null);

            _testBootstrapper
            .Resolve <IMockClient>()
            .Received()
            .updateFeature(Arg.Any <dynamic>());
        }
Example #5
0
        public void WhenIPostAResource_ThenICanGetItViaHttpAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application {
                ApplicationId = 1, Name = "TestApplication1"
            };

            _createApplication.Execute(application);

            var locale   = new GetAllLocales().Execute()[10].ToContract();
            var resource = GetResourceModel(locale, "Test", "Test", "Test", application.ToContract());

            Post(resource);

            var response = _browser.Get("/api/resource", with =>
            {
                with.Header("Accept", "application/json");
                with.Query("application", application.Name);
                with.Query("resourceSet", resource.ResourceSet);
                with.Query("resourceKey", resource.ResourceKey);
                with.Query("locale", resource.Locale.IsoCode);
            });

            var result = JsonConvert.DeserializeObject <Resource>(response.Body.AsString());

            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
            Assert.That(result.ApplicationId, Is.EqualTo(application.ApplicationId));
            Assert.That(result.ResourceKey, Is.EqualTo(resource.ResourceKey));
            Assert.That(result.ResourceSet, Is.EqualTo(resource.ResourceSet));
            Assert.That(result.Locale.IsoCode, Is.EqualTo(resource.Locale.IsoCode));

            _bootstrapper
            .Resolve <IMockClient>()
            .Received()
            .addResource(Arg.Any <dynamic>());
        }
Example #6
0
        public void WhenIHaveAnUnknownUrlAppConfigAndITryToResolveAFeatureUsingHttpFeatureResolver_ThenUnknownUrlExceptionIsThrown()
        {
            var application = new Data.Entities.Application {
                ApplicationId = 1, Name = "TestApplication1"
            };

            _createApplication.Execute(application);

            _browser.Post("/api/features", with =>
            {
                with.Header("Content-Type", "application/json");
                with.Body(JsonConvert.SerializeObject(GetFeatureModel("MySuperCoolFeature1", _getApplication.Execute(application.Name).ToContract())));
            });

            Assert.Throws <UriFormatException>(() => new HttpFeatureResolver("TestTestTest!!!"));
        }
Example #7
0
        public void WhenIDeleteAFeature_ThenTheFeatureIsRemovedAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application { ApplicationId = 1, Name = "TestApplication1" };
            _createApplication.Execute(application);

            var featureModel = GetFeatureModel("MySuperCoolFeature1", _getApplication.Execute(application.Name).ToContract());
            Post(featureModel);

            _browser.Delete("/api/features", with => { with.Query("id", "1"); });

            var feature = _getFeature.Execute(featureModel.Name, application.Name);
            Assert.That(feature, Is.Null);

            _testBootstrapper
                .Resolve<IMockClient>()
                .Received()
                .removeFeature(Arg.Any<dynamic>());
        }
        public void WhenIDeleteAResource_ThenTheResourceIsRemovedAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application { ApplicationId = 1, Name = "TestApplication1" };
            _createApplication.Execute(application);

            var locale = new GetAllLocales().Execute()[0].ToContract();
            var resourceModel = GetResourceModel(locale, "Test", "Test", "Test", _getApplication.Execute(application.Name).ToContract());
            Post(resourceModel);

            _browser.Delete("/api/resources", with => { with.Query("id", "1"); });

            var resource = _getResource.Execute(application.Name, "Test", "Test", "Test");
            Assert.That(resource, Is.Null);

            _bootstrapper
                .Resolve<IMockClient>()
                .Received()
                .removeResource(Arg.Any<dynamic>());
        }
Example #9
0
        public void WhenIGenerateBingResourcesForAGivenLocale_ThenICanGetItViaHttpAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application {
                ApplicationId = 1, Name = "TestApplication1"
            };

            _createApplication.Execute(application);

            var locale                 = new GetAllLocales().Execute().Single(l => l.IsoCode == "en-GB").ToContract();
            var targetLocale           = new GetAllLocales().Execute().Single(l => l.IsoCode == "de-DE").ToContract();
            var resource               = GetResourceModel(locale, "Test", "Test", "Hello World", application.ToContract());
            var generateResourcesModel = GetGenerateResourcesModel(application.ApplicationId, locale.LocaleId, targetLocale.LocaleId, "bing");

            Post(resource);
            Post(generateResourcesModel);

            var response = _browser.Get("/api/resource", with =>
            {
                with.Header("Accept", "application/json");
                with.Query("application", application.Name);
                with.Query("resourceSet", resource.ResourceSet);
                with.Query("resourceKey", resource.ResourceKey);
                with.Query("locale", targetLocale.IsoCode);
            });

            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));

            var result = JsonConvert.DeserializeObject <Resource>(response.Body.AsString());

            Assert.That(result.ApplicationId, Is.EqualTo(application.ApplicationId));
            Assert.That(result.ResourceKey, Is.EqualTo(resource.ResourceKey));
            Assert.That(result.ResourceSet, Is.EqualTo(resource.ResourceSet));
            Assert.That(result.Locale.IsoCode, Is.EqualTo(targetLocale.IsoCode));
            Assert.That(result.Value, Is.EqualTo("Hallo Welt"));

            _bootstrapper
            .Resolve <IMockClient>()
            .Received()
            .addResource(Arg.Any <dynamic>());
        }
Example #10
0
        public void WhenIDeleteAFeature_ThenTheFeatureIsRemovedAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application {
                ApplicationId = 1, Name = "TestApplication1"
            };

            _createApplication.Execute(application);

            var featureModel = GetFeatureModel("MySuperCoolFeature1", _getApplication.Execute(application.Name).ToContract());

            Post(featureModel);

            _browser.Delete("/api/features", with => { with.Query("id", "1"); });

            var feature = _getFeature.Execute(featureModel.Name, application.Name);

            Assert.That(feature, Is.Null);

            _testBootstrapper
            .Resolve <IMockClient>()
            .Received()
            .removeFeature(Arg.Any <dynamic>());
        }
Example #11
0
        public void WhenIDeleteAResource_ThenTheResourceIsRemovedAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application {
                ApplicationId = 1, Name = "TestApplication1"
            };

            _createApplication.Execute(application);

            var locale        = new GetAllLocales().Execute()[0].ToContract();
            var resourceModel = GetResourceModel(locale, "Test", "Test", "Test", _getApplication.Execute(application.Name).ToContract());

            Post(resourceModel);

            _browser.Delete("/api/resources", with => { with.Query("id", "1"); });

            var resource = _getResource.Execute(application.Name, "Test", "Test", "Test");

            Assert.That(resource, Is.Null);

            _bootstrapper
            .Resolve <IMockClient>()
            .Received()
            .removeResource(Arg.Any <dynamic>());
        }
Example #12
0
        public void WhenIGetAFeatureWithAHostnameOverride_ThenTheFeatureIsRetrieved()
        {
            var application = new Data.Entities.Application { Name = "TestApplication" };
            new CreateApplicationFake().Execute(application);
            var feature = new Data.Entities.Feature { ApplicationId = application.ApplicationId, Name = "MyTestFeature" };
            new CreateFeatureFake().Execute(feature);

            new CreateFeatureOverrideFake().Execute(new Data.Entities.FeatureOverride { FeatureId = feature.FeatureId, Hostname = Dns.GetHostName(), IsEnabled = true });

            var response = _browser.Get("/api/feature", with =>
            {
                with.Header("Accept", "application/json");
                with.Query("application", application.Name);
                with.Query("feature", feature.Name);
            });

            var result = JsonConvert.DeserializeObject<Contracts.Feature>(response.Body.AsString());
            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
            Assert.That(result.FeatureOverrides.Any(f => f.FeatureId == feature.FeatureId && f.IsEnabled), Is.True);
        }
Example #13
0
        public void WhenIPutAFeature_ThenTheFeatureIsUpdatedAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application { ApplicationId = 1, Name = "TestApplication1" };
            _createApplication.Execute(application);

            var featureModel = GetFeatureModel("MySuperCoolFeature1", _getApplication.Execute(application.Name).ToContract());
            Post(featureModel);

            var feature = _getFeature.Execute("MySuperCoolFeature1", application.Name);
            featureModel = feature.ToContract();
            featureModel.Name = "Ponies";

            Put(featureModel);

            feature = _getFeature.Execute("MySuperCoolFeature1", application.Name);
            Assert.That(feature, Is.Null);

            _testBootstrapper
                .Resolve<IMockClient>()
                .Received()
                .updateFeature(Arg.Any<dynamic>());
        }
Example #14
0
        public void WhenIPostAFeature_ThenICanGetItViaHttpAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application { ApplicationId = 1, Name = "TestApplication1" };
            _createApplication.Execute(application);

            var feature = GetFeatureModel("MySuperCoolFeature1", _getApplication.Execute(application.Name).ToContract());

            Post(feature);

            var response = _browser.Get("/api/feature", with =>
            {
                with.Header("Accept", "application/json");
                with.Query("application", application.Name);
                with.Query("feature", "MySuperCoolFeature1");
            });

            var result = JsonConvert.DeserializeObject<Contracts.Feature>(response.Body.AsString());
            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
            Assert.That(result.IsEnabled, Is.True);

            _testBootstrapper
                .Resolve<IMockClient>()
                .Received()
                .addFeature(Arg.Any<dynamic>());
        }
Example #15
0
        public void WhenIPutAResource_ThenTheResourceIsUpdatedAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application { ApplicationId = 1, Name = "TestApplication1" };
            _createApplication.Execute(application);

            var locale = new GetAllLocales().Execute()[0].ToContract();
            var resourceModel = GetResourceModel(locale, "Test", "Test", "Test", application.ToContract());
            Post(resourceModel);

            var resource = _getResource.Execute(application.Name, "Test", "Test", locale.IsoCode);
            resourceModel = resource.ToContract();
            resourceModel.Value = "Ponies";

            Put(resourceModel);

            resource = _getResource.Execute(application.Name, "Test", "Test", locale.IsoCode);
            Assert.That(resource.Value, Is.EqualTo("Ponies"));

            _bootstrapper
                .Resolve<IMockClient>()
                .Received()
                .updateResource(Arg.Any<dynamic>());
        }
Example #16
0
        public void WhenIGenerateBingResourcesForAGivenLocale_ThenICanGetItViaHttpAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application { ApplicationId = 1, Name = "TestApplication1" };
            _createApplication.Execute(application);

            var locale = new GetAllLocales().Execute().Single(l => l.IsoCode == "en-GB").ToContract();
            var targetLocale = new GetAllLocales().Execute().Single(l => l.IsoCode == "de-DE").ToContract();
            var resource = GetResourceModel(locale, "Test", "Test", "Hello World", application.ToContract());
            var generateResourcesModel = GetGenerateResourcesModel(application.ApplicationId, locale.LocaleId, targetLocale.LocaleId, "bing");

            Post(resource);
            Post(generateResourcesModel);

            var response = _browser.Get("/api/resource", with =>
            {
                with.Header("Accept", "application/json");
                with.Query("application", application.Name);
                with.Query("resourceSet", resource.ResourceSet);
                with.Query("resourceKey", resource.ResourceKey);
                with.Query("locale", targetLocale.IsoCode);
            });

            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));

            var result = JsonConvert.DeserializeObject<Resource>(response.Body.AsString());
            Assert.That(result.ApplicationId, Is.EqualTo(application.ApplicationId));
            Assert.That(result.ResourceKey, Is.EqualTo(resource.ResourceKey));
            Assert.That(result.ResourceSet, Is.EqualTo(resource.ResourceSet));
            Assert.That(result.Locale.IsoCode, Is.EqualTo(targetLocale.IsoCode));
            Assert.That(result.Value, Is.EqualTo("Hallo Welt"));

            _bootstrapper
                .Resolve<IMockClient>()
                .Received()
                .addResource(Arg.Any<dynamic>());
        }
Example #17
0
        public void WhenIHaveAnUnknownUrlAppConfigAndITryToResolveAFeatureUsingHttpFeatureResolver_ThenUnknownUrlExceptionIsThrown()
        {
            var application = new Data.Entities.Application { ApplicationId = 1, Name = "TestApplication1" };
            _createApplication.Execute(application);

            _browser.Post("/api/features", with =>
            {
                with.Header("Content-Type", "application/json");
                with.Body(JsonConvert.SerializeObject(GetFeatureModel("MySuperCoolFeature1", _getApplication.Execute(application.Name).ToContract())));
            });

            Assert.Throws<UriFormatException>(() => new HttpFeatureResolver("TestTestTest!!!"));
        }
Example #18
0
        public void WhenIPostAResource_ThenICanGetItViaHttpAndSignalRClientsAreNotified()
        {
            var application = new Data.Entities.Application { ApplicationId = 1, Name = "TestApplication1" };
            _createApplication.Execute(application);

            var locale = new GetAllLocales().Execute()[10].ToContract();
            var resource = GetResourceModel(locale, "Test", "Test", "Test", application.ToContract());

            Post(resource);

            var response = _browser.Get("/api/resource", with =>
            {
                with.Header("Accept", "application/json");
                with.Query("application", application.Name);
                with.Query("resourceSet", resource.ResourceSet);
                with.Query("resourceKey", resource.ResourceKey);
                with.Query("locale", resource.Locale.IsoCode);
            });

            var result = JsonConvert.DeserializeObject<Resource>(response.Body.AsString());
            Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.OK));
            Assert.That(result.ApplicationId, Is.EqualTo(application.ApplicationId));
            Assert.That(result.ResourceKey, Is.EqualTo(resource.ResourceKey));
            Assert.That(result.ResourceSet, Is.EqualTo(resource.ResourceSet));
            Assert.That(result.Locale.IsoCode, Is.EqualTo(resource.Locale.IsoCode));

            _bootstrapper
                .Resolve<IMockClient>()
                .Received()
                .addResource(Arg.Any<dynamic>());
        }