public override void Configure(IFunctionsHostBuilder builder)
        {
            var keyVaultName  = Environment.GetEnvironmentVariable("KeyVaultName");
            var configService = new ConfigService(keyVaultName);

            configService.LoadConfigurationAsync().Wait();

            var tableStorageAccount = CloudStorageAccount.Parse(configService.TableStorageAccountConnectionString);
            var tableClient         = tableStorageAccount.CreateCloudTableClient();

            var jobOutputStatusTable = tableClient.GetTableReference(configService.JobOutputStatusTableName);

            jobOutputStatusTable.CreateIfNotExists();
            var jobOutputStatusTableStorageService = new TableStorageService(jobOutputStatusTable);

            var provisioningRequestQueue = new QueueClient(configService.StorageAccountConnectionString, configService.ProvisioningRequestQueueName);

            provisioningRequestQueue.CreateIfNotExists();

            var jobOutputStatusStorageService     = new JobOutputStatusStorageService(jobOutputStatusTableStorageService);
            var provisioningRequestStorageService = new ProvisioningRequestStorageService(provisioningRequestQueue);
            var jobOutputStatusService            = new JobOutputStatusService(jobOutputStatusStorageService, provisioningRequestStorageService);
            var eventGridService = new EventGridService();

            builder.Services.AddSingleton <IJobOutputStatusService>(jobOutputStatusService);
            builder.Services.AddSingleton <IEventGridService>(eventGridService);
        }
Ejemplo n.º 2
0
        public void EventGridServiceIsValidEventGridPublishClientOptionsRaisesExceptionWhenNullEventGridPublishClientOptions()
        {
            // arrange

            // act
            var exceptionResult = Assert.Throws <ArgumentNullException>(() => EventGridService.IsValidEventGridPublishClientOptions(fakeLogger, null));

            // assert
            A.CallTo(() => fakeEventGridClientService.SendEventAsync(A <List <EventGridEvent> > .Ignored, A <string> .Ignored, A <string> .Ignored, A <string> .Ignored)).MustNotHaveHappened();
            Assert.Equal("Value cannot be null. (Parameter 'eventGridPublishClientOptions')", exceptionResult.Message);
        }
Ejemplo n.º 3
0
        public void EventGridServiceIsValidEventGridPublishClientOptionsReturnsSuccess()
        {
            // arrange
            const bool expectedResult = true;

            // act
            var result = EventGridService.IsValidEventGridPublishClientOptions(fakeLogger, eventGridPublishClientOptions);

            // assert
            Assert.Equal(expectedResult, result);
        }
Ejemplo n.º 4
0
        public async Task EventGridServiceSendEventAsyncReturnsSuccess()
        {
            // arrange
            var contentPageModel = BuildValidContentPageModel();
            var eventGridService = new EventGridService(fakeLogger, fakeEventGridClientService, eventGridPublishClientOptions);

            // act
            await eventGridService.SendEventAsync(WebhookCacheOperation.CreateOrUpdate, contentPageModel).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeEventGridClientService.SendEventAsync(A <List <EventGridEvent> > .Ignored, A <string> .Ignored, A <string> .Ignored, A <string> .Ignored)).MustHaveHappenedOnceExactly();
        }
Ejemplo n.º 5
0
        public void EventGridServiceContainsDifferencesReturnsNoDifferences()
        {
            // arrange
            const bool expectedResult           = false;
            var        existingContentPageModel = BuildValidContentPageModel();
            var        updatedContentPageModel  = BuildValidContentPageModel();

            // act
            var result = EventGridService.ContainsDifferences(existingContentPageModel, updatedContentPageModel);

            // assert
            Assert.Equal(expectedResult, result);
        }
Ejemplo n.º 6
0
        public void EventGridServiceIsValidEventGridPublishClientOptionsReturnsFalseWhenNullApiEndpoint()
        {
            // arrange
            const bool expectedResult = false;

            eventGridPublishClientOptions.ApiEndpoint = null;

            // act
            var result = EventGridService.IsValidEventGridPublishClientOptions(fakeLogger, eventGridPublishClientOptions);

            // assert
            Assert.Equal(expectedResult, result);
        }
Ejemplo n.º 7
0
        public void EventGridServiceIsValidEventGridPublishClientOptionsReturnsFalseWhenNullSubjectPrefix()
        {
            // arrange
            const bool expectedResult = false;

            eventGridPublishClientOptions.SubjectPrefix = string.Empty;

            // act
            var result = EventGridService.IsValidEventGridPublishClientOptions(fakeLogger, eventGridPublishClientOptions);

            // assert
            Assert.Equal(expectedResult, result);
        }
Ejemplo n.º 8
0
        public async Task EventGridServiceCompareAndSendEventAsyncReturnsSuccessForNoDifferences()
        {
            // arrange
            var existingContentPageModel = BuildValidContentPageModel();
            var updatedContentPageModel  = BuildValidContentPageModel();
            var eventGridService         = new EventGridService(fakeLogger, fakeEventGridClientService, eventGridPublishClientOptions);

            // act
            await eventGridService.CompareAndSendEventAsync(existingContentPageModel, updatedContentPageModel).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeEventGridClientService.SendEventAsync(A <List <EventGridEvent> > .Ignored, A <string> .Ignored, A <string> .Ignored, A <string> .Ignored)).MustNotHaveHappened();
        }
Ejemplo n.º 9
0
        public async Task EventGridServiceSendEventAsyncRaisesExceptionWhenNullContentPageModel()
        {
            // arrange
            ContentPageModel?contentPageModel = null;
            var eventGridService = new EventGridService(fakeLogger, fakeEventGridClientService, eventGridPublishClientOptions);

            // act
            var exceptionResult = await Assert.ThrowsAsync <ArgumentNullException>(async() => await eventGridService.SendEventAsync(WebhookCacheOperation.CreateOrUpdate, contentPageModel).ConfigureAwait(false)).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeEventGridClientService.SendEventAsync(A <List <EventGridEvent> > .Ignored, A <string> .Ignored, A <string> .Ignored, A <string> .Ignored)).MustNotHaveHappened();
            Assert.Equal("Value cannot be null. (Parameter 'updatedContentPageModel')", exceptionResult.Message);
        }
Ejemplo n.º 10
0
        public void EventGridServiceContainsDifferencesRaisesExceptionWhenNullUpdatedContantPageModel()
        {
            // arrange
            var existingContentPageModel             = BuildValidContentPageModel();
            ContentPageModel?updatedContentPageModel = null;

            // act
            var exceptionResult = Assert.Throws <ArgumentNullException>(() => EventGridService.ContainsDifferences(existingContentPageModel, updatedContentPageModel));

            // assert
            A.CallTo(() => fakeEventGridClientService.SendEventAsync(A <List <EventGridEvent> > .Ignored, A <string> .Ignored, A <string> .Ignored, A <string> .Ignored)).MustNotHaveHappened();
            Assert.Equal("Value cannot be null. (Parameter 'updatedContentPageModel')", exceptionResult.Message);
        }
Ejemplo n.º 11
0
        public async Task EventGridServiceSendEventAsyncRaisesExceptionWhenInvalidEventGridPublishClientOptions()
        {
            // arrange
            var contentPageModel = BuildValidContentPageModel();
            var eventGridService = new EventGridService(fakeLogger, fakeEventGridClientService, eventGridPublishClientOptions);

            eventGridPublishClientOptions.TopicEndpoint = string.Empty;

            // act
            await eventGridService.SendEventAsync(WebhookCacheOperation.CreateOrUpdate, contentPageModel).ConfigureAwait(false);

            // assert
            A.CallTo(() => fakeEventGridClientService.SendEventAsync(A <List <EventGridEvent> > .Ignored, A <string> .Ignored, A <string> .Ignored, A <string> .Ignored)).MustNotHaveHappened();
        }
Ejemplo n.º 12
0
        public void EventGridServiceContainsDifferencesReturnsDifferencesForIsDefaultForPageLocation()
        {
            // arrange
            const bool expectedResult           = true;
            var        existingContentPageModel = BuildValidContentPageModel();
            var        updatedContentPageModel  = BuildValidContentPageModel();

            updatedContentPageModel.IsDefaultForPageLocation = !existingContentPageModel.IsDefaultForPageLocation;

            // act
            var result = EventGridService.ContainsDifferences(existingContentPageModel, updatedContentPageModel);

            // assert
            Assert.Equal(expectedResult, result);
        }
Ejemplo n.º 13
0
        public void EventGridServiceContainsDifferencesReturnsDifferencesForNullRedirectLocations2()
        {
            // arrange
            const bool expectedResult           = true;
            var        existingContentPageModel = BuildValidContentPageModel();
            var        updatedContentPageModel  = BuildValidContentPageModel();

            existingContentPageModel.RedirectLocations = null;

            // act
            var result = EventGridService.ContainsDifferences(existingContentPageModel, updatedContentPageModel);

            // assert
            Assert.Equal(expectedResult, result);
        }
Ejemplo n.º 14
0
        public void EventGridServiceContainsDifferencesReturnsDifferencesForDifferentCanonicalName()
        {
            // arrange
            const bool expectedResult           = true;
            var        existingContentPageModel = BuildValidContentPageModel();
            var        updatedContentPageModel  = BuildValidContentPageModel();

            updatedContentPageModel.CanonicalName = existingContentPageModel.CanonicalName + ".with-a-difference";

            // act
            var result = EventGridService.ContainsDifferences(existingContentPageModel, updatedContentPageModel);

            // assert
            Assert.Equal(expectedResult, result);
        }
Ejemplo n.º 15
0
        public void EventGridServiceContainsDifferencesReturnsDifferencesForDifferentRedirectLocations()
        {
            // arrange
            const bool expectedResult           = true;
            var        existingContentPageModel = BuildValidContentPageModel();
            var        updatedContentPageModel  = BuildValidContentPageModel();

            updatedContentPageModel.RedirectLocations = new List <string> {
                "/location-3", "/location-4"
            };

            // act
            var result = EventGridService.ContainsDifferences(existingContentPageModel, updatedContentPageModel);

            // assert
            Assert.Equal(expectedResult, result);
        }