예제 #1
0
            public void ThePassShouldNotBeActivatedAgain()
            {
                using (PassContext context =
                           new PassContext(InMemoryDbContextOptionsFactory.Create <PassContext>()))
                {
                    var pass = new Pass {
                        CardId = 124, CreatedOn = DateTime.Today.AddDays(-4)
                    };
                    context.Passes.Add(pass);
                    context.SaveChanges();

                    var passActivation = new PassActivation {
                        PassId = pass.Id, ScanId = 555
                    };
                    context.PassActivations.Add(passActivation);
                    context.SaveChanges();

                    var mediatorMock = new Mock <IMediator>();
                    mediatorMock.Setup(m => m.Send(It.Is <CreateScan>(c => c.CardId == 124 && c.LocationId == 432))).Returns(555);
                    mediatorMock.Setup(m => m.Send(It.Is <ResolvePass>(r => r.CardId == 124 && r.LocationId == 432))).Returns(pass);

                    var dateServiceMock = new Mock <IDateService>();
                    dateServiceMock.Setup(d => d.Now()).Returns(DateTime.Now);

                    var controller = new ScanCardController(context, mediatorMock.Object, dateServiceMock.Object);

                    var result = controller.Get(124, 432);

                    mediatorMock.Verify(m => m.Send(It.Is <ActivatePass>(p => p.PassId == pass.Id && p.ScanId == 555)), Times.Never);
                }
            }
예제 #2
0
            public void ResultShouldBeTrue()
            {
                using (PassContext context =
                           new PassContext(InMemoryDbContextOptionsFactory.Create <PassContext>()))
                {
                    var pass = new Pass {
                        CardId = 124, CreatedOn = DateTime.Today.AddDays(-4)
                    };
                    context.Passes.Add(pass);
                    context.SaveChanges();

                    var passActivation = new PassActivation {
                        PassId = pass.Id, ScanId = 555
                    };
                    context.PassActivations.Add(passActivation);
                    context.SaveChanges();

                    var mediatorMock = new Mock <IMediator>();
                    mediatorMock.Setup(m => m.Send(It.Is <ResolvePass>(r => r.CardId == 124 && r.LocationId == 432))).Returns(pass);

                    var dateServiceMock = new Mock <IDateService>();
                    dateServiceMock.Setup(d => d.Now()).Returns(DateTime.Now);

                    var controller = new ScanCardController(context, mediatorMock.Object, dateServiceMock.Object);

                    var result = controller.Get(124, 432);

                    Assert.IsType <OkObjectResult>(result);
                    OkObjectResult okObjectResult = (OkObjectResult)result;
                    Assert.Equal(true, okObjectResult.Value);
                }
            }
예제 #3
0
        public void Handle(PurchaseCompleted notification)
        {
            var newPasses = new List <Pass>();

            foreach (var passPurchase in notification.Passes)
            {
                Pass pass = new Pass
                {
                    CardId     = passPurchase.CardId,
                    CreatedOn  = DateTime.UtcNow,
                    PassTypeId = passPurchase.PassTypeId
                };

                newPasses.Add(pass);
            }

            _passContext.Passes.AddRange(newPasses);
            _passContext.SaveChanges();

            foreach (var newPass in newPasses)
            {
                var passAddedEvent = new PassAdded
                {
                    PassId     = newPass.Id,
                    PassTypeId = newPass.PassTypeId,
                    CardId     = newPass.CardId,
                    CreatedOn  = newPass.CreatedOn
                };

                _bus.Publish(passAddedEvent);
            }
        }
예제 #4
0
        public void Should_check_context_using_provided_card_id()
        {
            var context         = new PassContext(InMemoryDbContextOptionsFactory.Create <PassContext>());
            var cardId          = 1337;
            var verifyingPassId = 7331;

            context.Passes.Add(new Pass {
                CardId = cardId, Id = 7330
            });
            context.Passes.Add(new Pass {
                CardId = cardId, Id = verifyingPassId
            });
            context.Passes.Add(new Pass {
                CardId = cardId, Id = 7332
            });
            context.SaveChanges();

            var validator = new Mock <IPassValidityChecker>();

            validator.Setup(c => c.IsValid(It.IsAny <int>()))
            .Returns <int>(i => context.Passes.Any(p => p.CardId == i));

            var handler = new ResolvePassHandler(context, validator.Object);

            handler.Handle(new Queries.ResolvePass {
                CardId = cardId
            });

            validator.Verify(v => v.IsValid(It.Is <int>(i => i == verifyingPassId)), Times.Once);
            validator.Verify(v => v.IsValid(It.IsAny <int>()), Times.Exactly(3));
        }
예제 #5
0
        public int Handle(ActivatePass message)
        {
            PassActivation activation = new PassActivation
            {
                PassId = message.PassId,
                ScanId = message.ScanId
            };

            _passContext.PassActivations.Add(activation);
            _passContext.SaveChanges();

            _mediator.Publish(new PassActivated {
                PassActivationId = activation.Id
            });

            return(activation.Id);
        }
예제 #6
0
        public int Handle(CreateScan message)
        {
            var scan = new Scan
            {
                CardId     = message.CardId,
                LocationId = message.LocationId,
                DateTime   = _dateService.Now()
            };

            _passContext.Scans.Add(scan);
            _passContext.SaveChanges();

            _mediator.Publish(new CardScanned {
                ScanId = scan.Id
            });
            return(scan.Id);
        }
예제 #7
0
        public async Task <IActionResult> Signup([FromBody] Login val)
        {
            UserDataContext userDatadb = new UserDataContext();
            UserNContext    userNamedb = new UserNContext();
            PassContext     passworddb = new PassContext();

            //At this stage we have no userData besides the ID
            //Creating this object automatically generates an ID
            UserDataDB userData = new UserDataDB();

            //Create new username and password database entries with the same key
            UserNDB userName = new UserNDB(userData.UserId);

            userName.Email    = val.email;
            userName.UserName = val.username;
            PassDB password = new PassDB(userData.UserId);

            password.Password = val.password;

            userDatadb.Add(userData);
            userNamedb.Add(userName);
            passworddb.Add(password);

            //update the databases
            try
            {
                userDatadb.SaveChanges();
                userNamedb.SaveChanges();
                passworddb.SaveChanges();
            }
            catch (DbUpdateException)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }

            return(Ok(200));

            //string newUser = JsonSerializer.Serialize(val);
            //bool complete = await be.incomming(1, 3, newUser);
            //bool complete = true;
            //if (complete)
            //{
            //    return Ok(200);
            //}
            //return BadRequest(400);
        }
예제 #8
0
        public void Should_be_invalid_if_current_time_is_after_valid_date()
        {
            _mockDateService.Setup(x => x.Now()).Returns(new DateTime(2012, 01, 01));
            var passType = new PassType
            {
                ValidFrom = new DateTime(2010, 01, 01),
                ValidTo   = new DateTime(2011, 01, 01)
            };

            _passTypeContext.PassTypes.Add(passType);
            _passTypeContext.SaveChanges();
            var pass = new Pass
            {
                CreatedOn  = DateTime.UtcNow,
                PassTypeId = passType.Id
            };

            _passContext.Add(pass);
            _passContext.SaveChanges();
            var checker = GetInstance();

            Assert.False(checker.IsValid(pass.Id));
        }