public async Task <IActionResult> PostAccount([FromBody] AccountPostModel model) { Guid userId = model.Id; try { await _commandBus.Send(new RegisterUserCommand { Id = userId, BaseUrl = BaseUrl.Current, LoginName = model.LoginName, Name = model.Name, Surname = model.Surname, Email = model.Email, Password = model.Password, TelephoneNumber = model.TelephoneNumber }); } catch (LoginNameAlreadyUsedException ex) { //ModelState.AddModelError(); // todo think about it ModelStateDictionary mds = new ModelStateDictionary(); mds.AddModelError(nameof(ex.LoginName), $"The provided username {ex.LoginName} already exists"); return(Conflict(mds)); } return(Created(new Uri($"{BaseUrl.Current}/api/v1.0/confirmations/{userId}"), userId)); }
public async void UserCreationProcessTests_ShouldFailWhenUserNameIsNotUniqueAndRegistrationProcessIsNotComplete() { // Setup InMemoryAccountsRepository inMemoryAccountsRepository = new InMemoryAccountsRepository(); Bootstrap.Run(new string[0], builder => { builder.RegisterInstance(inMemoryAccountsRepository).AsImplementedInterfaces().SingleInstance(); }, "IntegrationTesting"); Guid userId = Guid.NewGuid(); AccountPostModel accountPostModel = CreatePostAccountModel(userId); // Act using (Response <string> response = await RestClient.For <IAccountsApi>(Url).PostAccount(accountPostModel)) { Assert.True(response.ResponseMessage.IsSuccessStatusCode); HttpResponseHeaders responseMessageHeaders = response.ResponseMessage.Headers; Assert.True(responseMessageHeaders.Location.IsAbsoluteUri); } using (Response <ModelStateDictionary> response = await RestClient.For <IAccountsApi>(Url).PostAccountError(accountPostModel)) { Assert.False(response.ResponseMessage.IsSuccessStatusCode); Dictionary <string, string[]> deserializeObject = JsonConvert.DeserializeObject <Dictionary <string, string[]> >(response.StringContent); Assert.Equal($"The provided username {accountPostModel.LoginName} already exists", deserializeObject["LoginName"][0]); } }
/// <summary> /// /// </summary> /// <param name="accountPostModel"></param> /// <returns></returns> public async Task <ServiceResponse <AccountModel> > PostAccount(AccountPostModel accountPostModel) { try { //TODO: Create POST logic. // return(null); } catch (Exception e) { return(new ServiceResponse <AccountModel> { ErrorCode = HttpStatusCode.InternalServerError, ErrorDescription = "Internal Server Error" }); } }
public async void UserCreationProcessTests() { // Setup InMemoryAccountsRepository inMemoryAccountsRepository = new InMemoryAccountsRepository(); Bootstrap.Run(new string[0], builder => { builder.RegisterInstance(inMemoryAccountsRepository).AsImplementedInterfaces().SingleInstance(); }, "IntegrationTesting"); Guid userId = Guid.NewGuid(); AccountPostModel accountPostModel = CreatePostAccountModel(userId); // Act HttpResponseHeaders responseMessageHeaders; using (Response <string> response = await RestClient.For <IAccountsApi>(Url).PostAccount(accountPostModel)) { Assert.True(response.ResponseMessage.IsSuccessStatusCode); responseMessageHeaders = response.ResponseMessage.Headers; Assert.True(responseMessageHeaders.Location.IsAbsoluteUri); } using (Response <string> response = await RestClient.For <IConfirmationApi>(responseMessageHeaders.Location) .PutConfirmation(new ConfirmationPutModel { Confirmed = true })) { Assert.True(response.ResponseMessage.IsSuccessStatusCode); } using (Response <AccountReadModel> response = await RestClient.For <IAccountsApi>(Url).GetAccount(userId)) { Assert.True(response.ResponseMessage.IsSuccessStatusCode); AccountReadModel accountReadModel = response.GetContent(); Assert.Equal(accountPostModel.LoginName, accountReadModel.LoginName); Assert.Equal(accountPostModel.Name, accountReadModel.Name); Assert.Equal(accountPostModel.Surname, accountReadModel.Surname); } }
public async Task <IActionResult> Post([FromBody] AccountPostModel model) { if (await UserManager.Users.AnyAsync(x => x.Email == model.Email)) { return(BadRequest(new ApiErrorResult <ApiError>(new ApiError(ApiErrorCodes.BadArgument, "重复的用户信息。") { Details = new List <ApiError> { new ApiError(ApiErrorCodes.BadArgument, "该邮箱已被注册。") { Target = "email" } } }))); } var id = await IdentityGenerator.GenerateAsync(); var result = await UserManager.CreateAsync(new User { Id = id, Email = model.Email, UserName = model.Email, Name = model.Name, Avatar = PrimarySettings.DefaultAvatar }, model.Password); if (result.Succeeded) { Logger.LogInformation("账户创建成功"); return(StatusCode(201, new ApiResult <ObjectCreationOutputModel <long> >(new ObjectCreationOutputModel <long>(id, $"{Request.Scheme}://{Request.Host.Value}/api/accounts/{id}")))); } return(BadRequest(new ApiErrorResult <ApiError>(new ApiError(ApiErrorCodes.BadArgument, "意外的错误,请重试。")))); }
public async Task <ActionResult <AccountModel> > PostAccount(AccountPostModel accountPostModel) { return(Ok()); }