Beispiel #1
0
        public static async Task Seed(this IContainer container)
        {
            await using var scope = container.BeginLifetimeScope();
            var mediator = scope.Resolve <IMediator>();
            var authenticationService = scope.Resolve <AuthenticationService>();

            var logIn       = new LogIn("12312312312");
            var logInResult = await mediator.Send(logIn);

            if (!logInResult.TryGet(out var voter))
            {
                var createVoter = new CreateVoter("12312312312");
                await mediator.Send(createVoter)
                .OnError(error => throw new InvalidOperationException($"cannot create voter while seeding: {error}"));

                logIn = new LogIn("12312312312");
                voter = await mediator.Send(logIn)
                        .OnError(error => throw new InvalidOperationException($"cannot create voter while seeding: {error}"));
            }

            var identity = new VoterIdentity(voter.Id, voter.Pesel, voter.IsAdministrator);

            authenticationService.SetIdentity(identity);

            var getQuestionsCount = new GetQuestionsCount();
            var questionsCount    = await mediator.Send(getQuestionsCount)
                                    .OnError(error => throw new InvalidOperationException($"cannot get questions count while seeding: {error}"));

            if (questionsCount.Count == 0)
            {
                var createQuestion = new CreateQuestion("Some question?", new[] { "Answer 1", "Answer 2", "Answer 3" });
                await mediator.Send(createQuestion)
                .OnError(error => throw new InvalidOperationException($"cannot create question while seeding: {error}"));
            }
        }
        private async Task Register(string pesel)
        {
            var createVoter = new CreateVoter(pesel);

            VoterViewModel voterViewModel;

            try
            {
                var voterId = await _mediator.Send(createVoter)
                              .OnError(error => throw new InvalidOperationException(error.ToString()));

                var logIn = new LogIn(pesel);
                voterViewModel = await _mediator.Send(logIn)
                                 .OnError(error => throw new InvalidOperationException(error.ToString()));
            }
            catch (Exception exception)
            {
                exception.WriteToConsole();
                return;
            }

            Console.WriteLine();
            Console.WriteLine(voterViewModel.ToString());
            Console.WriteLine();
            Console.WriteLine("Now you can login.");
        }
Beispiel #3
0
        public async Task <IActionResult> Register([FromBody] CreateVoter request)
        {
            var voterId = await _mediator.Send(request);

            var logIn    = new LogIn(request.Pesel);
            var response = await _mediator.Send(logIn);

            return(HandleErrors(response, Ok));
        }
Beispiel #4
0
        public async Task Should_Return_Error_On_Duplicated_Voter()
        {
            const string voterPesel = "87062537594";

            var createFirstVoter = new CreateVoter(voterPesel);
            var firstResponse    = await Mediator.Send(createFirstVoter);

            var createSameAsPreviousVoter = new CreateVoter(voterPesel);
            var secondResponse            = await Mediator.Send(createSameAsPreviousVoter);

            AssertNotError.Of(firstResponse);
            AssertError <ObjectAlreadyExistsError> .Of(secondResponse);
        }
Beispiel #5
0
        public async Task First_Registered_Voter_Should_Be_Admin()
        {
            const string voterPesel = "87062537594";

            var createVoter         = new CreateVoter(voterPesel);
            var createVoterResponse = await Mediator.Send(createVoter);

            var logIn         = new LogIn(voterPesel);
            var logInResponse = await Mediator.Send(logIn);

            AssertNotError.Of(createVoterResponse);
            var voterViewModel = AssertNotError.Of(logInResponse);

            Assert.That(voterViewModel.IsAdministrator, Is.True);
        }
Beispiel #6
0
        public async Task Check_If_Voter_Was_Created()
        {
            const string voterPesel = "87062537594";

            var createVoter = new CreateVoter(voterPesel);

            _ = await Mediator.Send(createVoter);

            var logIn         = new LogIn(voterPesel);
            var voterResponse = await Mediator.Send(logIn);

            var voter = AssertNotError.Of(voterResponse);

            Assert.That(voter.Pesel, Is.EqualTo(voterPesel));
        }
        private async Task <VoterViewModel> CreateAdministrator()
        {
            const string adminPesel = "71102117282";

            // first registered user is admin
            var createAdmin = new CreateVoter(adminPesel);
            await Mediator.Send(createAdmin)
            .OnError(error => throw new Exception($"cannot create admin: {error}"));

            var logIn = new LogIn(adminPesel);

            _administrator = await Mediator.Send(logIn)
                             .OnError(error => throw new Exception($"cannot create admin: {error}"));

            return(_administrator);
        }
Beispiel #8
0
        public async Task LogInAsRandomVoter()
        {
            await using var scope = _container.BeginLifetimeScope();
            var mediator = _container.Resolve <IMediator>();

            var pesel = GenerateRandomPesel();

            var createVoter = new CreateVoter(pesel);
            await mediator.Send(createVoter)
            .OnError(error => throw new InvalidOperationException(error.ToString()));

            var logIn         = new LogIn(pesel);
            var logInResponse = await mediator.Send(logIn)
                                .OnError(error => throw new InvalidOperationException(error.ToString()));

            _voterIdentity = new VoterIdentity(
                logInResponse.Id,
                logInResponse.Pesel,
                logInResponse.IsAdministrator);
        }
Beispiel #9
0
        public async Task Second_Registered_Voter_Should_Not_Be_Admin()
        {
            const string firstVoterPesel  = "87062537594";
            const string secondVoterPesel = "92113059581";

            var createFirstVoter = new CreateVoter(firstVoterPesel);

            _ = await Mediator.Send(createFirstVoter);

            var createSecondVoter   = new CreateVoter(secondVoterPesel);
            var secondVoterResponse = await Mediator.Send(createSecondVoter);

            var logIn         = new LogIn(secondVoterPesel);
            var logInResponse = await Mediator.Send(logIn);

            AssertNotError.Of(secondVoterResponse);
            var secondVoter = AssertNotError.Of(logInResponse);

            Assert.That(secondVoter.IsAdministrator, Is.False);
        }
        private async Task <VoterViewModel> CreateVoter()
        {
            if (_administrator is null)
            {
                // first is admin, I don't care
                _ = await CreateAdministrator();
            }

            const string voterPesel = "99041878149";

            // second is not admin
            var createVoter = new CreateVoter(voterPesel);
            await Mediator.Send(createVoter)
            .OnError(error => throw new Exception($"cannot create voter: {error}"));

            var logIn = new LogIn(voterPesel);

            _voter = await Mediator.Send(logIn)
                     .OnError(error => throw new Exception($"cannot create voter: {error}"));

            return(_voter);
        }