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."); }
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)); }
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); }
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); }
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); }
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); }
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); }