예제 #1
0
        public async Task DeleteAvailabilityRecordCommandHandler_Handle_AvailabilityRecordDeleted()
        {
            var accountId          = Guid.NewGuid();
            var availabilityRecord = new AvailabilityRecord(accountId,
                                                            "test",
                                                            "http://google.com/",
                                                            200,
                                                            "{}",
                                                            2);

            await _availabilityRecordRepository.AddAsync(availabilityRecord, CancellationToken.None);

            await _availabilityRecordRepository.UnitOfWork.SaveEntitiesAsync(CancellationToken.None);

            var claimsIdentity = new ClaimsIdentity();

            claimsIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, accountId.ToString()));
            var claimsPrincipal = new ClaimsPrincipal();

            claimsPrincipal.AddIdentity(claimsIdentity);

            var deleteAvailabilityRecordCommandHandler = new DeleteAvailabilityRecordCommandHandler(_availabilityRecordRepository,
                                                                                                    _claimConverter);

            await deleteAvailabilityRecordCommandHandler.Handle(new DeleteAvailabilityRecordCommand(availabilityRecord.Id, claimsPrincipal),
                                                                CancellationToken.None).ConfigureAwait(false);

            Assert.Empty(await _availabilityContext.AvailabilityRecords.ToListAsync(CancellationToken.None));
        }
        public async Task RequestServicesCommandHandler_Handle_RecordsProcessed()
        {
            var availabilityService = new Mock <IAvailabilityService>();

            availabilityService.Setup(e => e.Request(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new AvailabilityResponseModel(HttpStatusCode.OK, 22, "{}"));

            var availabilityProcessor = new AvailabilityProcessor(_availabilityRecordRepository,
                                                                  availabilityService.Object);

            var requestServicesCommandHandler = new RequestServicesCommandHandler(_availabilityContext,
                                                                                  availabilityProcessor);

            var availabilityRecord = new AvailabilityRecord(Guid.NewGuid(),
                                                            "test name",
                                                            "http://google.com",
                                                            200,
                                                            null,
                                                            2);

            await _availabilityRecordRepository.AddAsync(availabilityRecord, CancellationToken.None);

            await _availabilityRecordRepository.UnitOfWork.SaveEntitiesAsync(CancellationToken.None);

            await requestServicesCommandHandler.Handle(new RequestServicesCommand(), CancellationToken.None);

            availabilityRecord = await _availabilityRecordRepository
                                 .GetById(availabilityRecord.Id, CancellationToken.None)
                                 .ConfigureAwait(false);

            Assert.Single(availabilityRecord.AvailabilityLogs);
            Assert.Equal(200, availabilityRecord.AvailabilityLogs.First().StatusCode);
            Assert.Equal(22, availabilityRecord.AvailabilityLogs.First().ResponseTime);
            Assert.Equal("{}", availabilityRecord.AvailabilityLogs.First().Body);
        }
예제 #3
0
        public async Task AvailabilityProcessor_ProcessAvailabilityRecord_RecordProcessed()
        {
            var availabilityRecord = new AvailabilityRecord(Guid.NewGuid(),
                                                            "test name",
                                                            "http://google.com/",
                                                            200,
                                                            null,
                                                            2);

            await _availabilityRecordRepository.AddAsync(availabilityRecord, CancellationToken.None);

            await _availabilityRecordRepository.UnitOfWork.SaveEntitiesAsync(CancellationToken.None);

            var availabilityService = new Mock <IAvailabilityService>();

            availabilityService.Setup(e => e.Request(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new AvailabilityResponseModel(HttpStatusCode.OK, 65, "{}"));

            var availabilityProcessor = new AvailabilityProcessor(_availabilityRecordRepository,
                                                                  availabilityService.Object);

            await availabilityProcessor.ProcessAvailabilityRecord(availabilityRecord.Id, CancellationToken.None);

            availabilityRecord = await _availabilityRecordRepository.GetById(availabilityRecord.Id, CancellationToken.None);

            Assert.Single(availabilityRecord.AvailabilityLogs);
            Assert.Equal(200, availabilityRecord.AvailabilityLogs.First().StatusCode);
            Assert.Equal("{}", availabilityRecord.AvailabilityLogs.First().Body);
            Assert.Equal(65, availabilityRecord.AvailabilityLogs.First().ResponseTime);
        }
        public async Task UpdateAvailabilityRecordCommandHandler_Handle_AvailabilityRecordUpdated()
        {
            var accountId = Guid.NewGuid();

            var claimsIdentity = new ClaimsIdentity();

            claimsIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, accountId.ToString()));
            var claimsPrincipal = new ClaimsPrincipal();

            claimsPrincipal.AddIdentity(claimsIdentity);

            var createAvailabilityRecordCommandHandler = new UpdateAvailabilityRecordCommandHandler(_availabilityRecordRepository,
                                                                                                    _claimConverter);

            var record = new AvailabilityRecord(accountId,
                                                "name",
                                                "url",
                                                200,
                                                "{}",
                                                1);

            await _availabilityRecordRepository.AddAsync(record,
                                                         CancellationToken.None);

            await _availabilityRecordRepository.UnitOfWork.SaveEntitiesAsync(CancellationToken.None);

            await createAvailabilityRecordCommandHandler.Handle(new UpdateAvailabilityRecordCommand(claimsPrincipal,
                                                                                                    record.Id,
                                                                                                    "test name",
                                                                                                    "http://google.com/",
                                                                                                    200,
                                                                                                    "{}",
                                                                                                    12), CancellationToken.None).ConfigureAwait(false);

            Assert.Equal(accountId, record.AccountId);
            Assert.Equal("test name", record.Name);
            Assert.Equal("http://google.com/", record.Url);
            Assert.Equal(200, record.ExpectedStatusCode);
            Assert.Equal("{}", record.ExpectedResponse);
            Assert.Equal(12, record.LogLifetimeThresholdInHours);
        }
        public async Task Handle(CreateAvailabilityRecordCommand notification, CancellationToken cancellationToken)
        {
            var accountId = _claimConverter.GetAccountId(notification.ClaimsPrincipal);

            var availabilityRecord = new AvailabilityRecord(accountId,
                                                            notification.Name,
                                                            notification.Url,
                                                            notification.ExpectedStatusCode,
                                                            notification.ExpectedResponse,
                                                            notification.LogLifetimeThresholdInHours);

            await _availabilityRecordRepository.AddAsync(availabilityRecord, cancellationToken)
            .ConfigureAwait(false);

            await _availabilityRecordRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken);
        }
        public async Task GetAvailabilityRecordsCommandHandler_Handle_AvailabilityRecordsReturned()
        {
            var accountId = Guid.NewGuid();

            var availabilityRecord = new AvailabilityRecord(accountId,
                                                            "test name",
                                                            "http://google.com/",
                                                            200,
                                                            "{}",
                                                            2);

            availabilityRecord.AppendLog(200, "{}", 66);

            await _availabilityRecordRepository.AddAsync(availabilityRecord, CancellationToken.None)
            .ConfigureAwait(false);

            await _availabilityRecordRepository.UnitOfWork.SaveEntitiesAsync(CancellationToken.None);

            var claimsIdentity = new ClaimsIdentity();

            claimsIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, accountId.ToString()));
            var claimsPrincipal = new ClaimsPrincipal();

            claimsPrincipal.AddIdentity(claimsIdentity);

            var configuration = new MapperConfiguration(cfg => {
                cfg.AddProfile <DefaultDomainMapping>();
            });

            var mapper = configuration.CreateMapper();

            var getAvailabilityRecordsCommandHandler = new GetAvailabilityListItemsCommandHandler(_availabilityRecordRepository,
                                                                                                  _claimConverter,
                                                                                                  mapper);

            var availabilityListItemDtos = await getAvailabilityRecordsCommandHandler
                                           .Handle(new GetAvailabilityListItemsCommand(claimsPrincipal), CancellationToken.None)
                                           .ConfigureAwait(false);

            Assert.Equal(availabilityRecord.Id, availabilityListItemDtos.First().Id);
            Assert.Equal("http://google.com/", availabilityListItemDtos.First().Url);
            Assert.Equal("test name", availabilityListItemDtos.First().Name);
            Assert.Equal("ST_OK", availabilityListItemDtos.First().Status);
        }