Ejemplo n.º 1
0
        private void AddRegisteredUser(LoyaltyProgramUser newUser)
        {
            var userId = registeredUsers.Count;

            newUser.Id = userId;
            registeredUsers[userId] = newUser;
        }
Ejemplo n.º 2
0
        public async Task allow_modifying_users()
        {
            var expected             = "jane";
            var user                 = new LoyaltyProgramUser(0, "Christian", 0, new LoyaltyProgramSettings());
            var registrationResponse = await this.sut.PostAsync(
                "/users",
                new StringContent(JsonSerializer.Serialize(user), Encoding.UTF8, "application/json"));

            var newUser = await
                          JsonSerializer.DeserializeAsync <LoyaltyProgramUser>(
                await registrationResponse.Content.ReadAsStreamAsync(),
                new JsonSerializerOptions { PropertyNameCaseInsensitive = true }) !;

            var updatedUser = newUser !with {
                Name = expected
            };
            var actual = await this.sut.PutAsync($"/users/{newUser.Id}",
                                                 new StringContent(JsonSerializer.Serialize(updatedUser), Encoding.UTF8, "application/json"));

            var actualUser = await JsonSerializer.DeserializeAsync <LoyaltyProgramUser>(
                await actual.Content.ReadAsStreamAsync(),
                new JsonSerializerOptions { PropertyNameCaseInsensitive = true });

            Assert.Equal(HttpStatusCode.OK, actual.StatusCode);
            Assert.Equal(expected, actualUser?.Name);
        }
Ejemplo n.º 3
0
        private LoyaltyProgramUser RegisterUser(LoyaltyProgramUser user)
        {
            var userId = RegisteredUsers.Count;

            return(RegisteredUsers[userId] = user with {
                Id = userId
            });
Ejemplo n.º 4
0
        public int AddUser(LoyaltyProgramUser user)
        {
            var id = GenerateNextUserId();

            user.Id = id;
            _storage.Add(id, user);
            return(id);
        }
Ejemplo n.º 5
0
 private dynamic CreatedResponse(LoyaltyProgramUser newUser)
 {
     return
         (this.Negotiate
          .WithStatusCode(HttpStatusCode.Created)
          .WithHeader("Location", this.Request.Url.SiteBase + "/users/" + newUser.Id)
          .WithModel(newUser));
 }
Ejemplo n.º 6
0
        private void AddRegisteredUser(LoyaltyProgramUser newUser)
        {
            // Store the newUser to a data store
            var userId = registeredUsers.Count;

            newUser.Id = userId;
            registeredUsers[userId] = newUser;
        }
Ejemplo n.º 7
0
        private void ProcessUserRegistration(string cmd)
        {
            var newUser = new LoyaltyProgramUser {
                Name = cmd.Substring(1).Trim()
            };
            var response = client.RegisterUser(newUser).Result;

            PrettyPrintResponse(response);
        }
Ejemplo n.º 8
0
        private static LoyaltyProgramUser CreateDummyUser()
        {
            var user = new LoyaltyProgramUser {
                Id = GenerateNextUserId()
            };

            _storage.Add(user.Id, user);
            return(user);
        }
        public ActionResult <LoyaltyProgramUser> CreateUser([FromBody] LoyaltyProgramUser user)
        {
            if (user == null)
            {
                return(BadRequest());
            }
            var newUser = RegisterUser(user);

            return(Created(new Uri($"/users/{newUser.Id}", UriKind.Relative), newUser));
        }
Ejemplo n.º 10
0
        private void UpdateProperty(LoyaltyProgramUser source, LoyaltyProgramUser target, string propertyName)
        {
            var propertyInfo = typeof(LoyaltyProgramUser).GetProperty(propertyName);
            var sourceValue  = propertyInfo.GetValue(source);
            var targetValue  = propertyInfo.GetValue(target);

            if (sourceValue != null && !sourceValue.Equals(targetValue))
            {
                propertyInfo.SetValue(target, sourceValue);
            }
        }
Ejemplo n.º 11
0
        private async Task <HttpResponseMessage> DoUpdateUser(LoyaltyProgramUser user)
        {
            using (var httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
                httpClient.BaseAddress = new Uri($"http://{_hostName}");
                var response = await httpClient.PutAsync($"/users/{user.Id}", new StringContent(JsonConvert.SerializeObject(user), Encoding.UTF8, "application/json"));

                ThrowOnTransientFailure(response);
                return(response);
            }
        }
Ejemplo n.º 12
0
        public void UpdateUser(int userId, LoyaltyProgramUser user)
        {
            if (!_storage.ContainsKey(userId))
            {
                return;
            }

            var existingUser = _storage[userId];

            UpdateProperty(user, existingUser, nameof(LoyaltyProgramUser.Name));
            UpdateProperty(user, existingUser, nameof(LoyaltyProgramUser.LoyaltyPoints));
            UpdateProperty(user, existingUser, nameof(LoyaltyProgramUser.Settings));
        }
Ejemplo n.º 13
0
        public async Task allow_to_register_new_user()
        {
            var expected = new LoyaltyProgramUser {
                Name = "Chr"
            };
            var registrationResponse = await _sut.Post("/users", with => with.JsonBody(expected));

            var newUser = registrationResponse.Body.DeserializeJson <LoyaltyProgramUser>();

            var actual = await _sut.Get($"/users/{newUser.Id}");

            Assert.Equal(HttpStatusCode.OK, actual.StatusCode);
            Assert.Equal(expected.Name, actual.Body.DeserializeJson <LoyaltyProgramUser>().Name);
        }
Ejemplo n.º 14
0
        private async Task <HttpResponseMessage> DoRegisterUser(LoyaltyProgramUser newUser)
        {
            using (var httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
                //httpClient.DefaultRequestHeaders.Add("Content-Type", "application/json"); // this is automatically added by the stringContent below
                httpClient.BaseAddress = new Uri($"http://{_hostName}");
                var stringContent = new StringContent(JsonConvert.SerializeObject(newUser), Encoding.UTF8, "application/json");
                var response      = await httpClient.PostAsync("/users/", stringContent);

                ThrowOnTransientFailure(response);
                return(response);
            }
        }
Ejemplo n.º 15
0
        public async Task allow_modifying_users()
        {
            var expected = "jane";
            var user     = new LoyaltyProgramUser {
                Name = "Chr"
            };
            var registrationResponse = await _sut.Post("/users", with => with.JsonBody(user));

            var newUser = registrationResponse.Body.DeserializeJson <LoyaltyProgramUser>();

            newUser.Name = expected;
            var actual = await _sut.Put($"/users/{newUser.Id}", with => with.JsonBody(newUser));

            Assert.Equal(expected, actual.Body.DeserializeJson <LoyaltyProgramUser>().Name);
        }
        public async Task <IActionResult> RegisterUser([FromBody] LoyaltyProgramUser newUser)
        {
            if (newUser != null)
            {
                await _loyaltyContext.LoyaltyProgramUser.AddAsync(newUser);

                await _loyaltyContext.SaveChangesAsync();

                var createdUserUrl = this.Request.Host + "/users/" + newUser.Id;

                return(Created(createdUserUrl, newUser));
            }

            return(BadRequest("Ошибка при регистрации пользователя"));
        }
Ejemplo n.º 17
0
        public ActionResult <LoyaltyProgramUser> UpdateUser(
            int userId,
            [FromBody] LoyaltyProgramUser user)
        {
            var hasUserId = int.TryParse(
                this.User.Claims.FirstOrDefault(c => c.Type == "userid")?.Value,
                out var userIdFromToken);

            if (!hasUserId || userId != userIdFromToken)
            {
                return(Unauthorized());
            }

            return(RegisteredUsers[userId] = user);
        }
        public async Task <IActionResult> UpdateUserAsync([FromBody] LoyaltyProgramUser user)
        {
            if (user == null)
            {
                return(BadRequest("Требуется пользователь"));
            }

            var usersSettings = new List <LoyaltyProgramSettings>();

            usersSettings = user.Settings.ToList();

            _loyaltyContext.LoyaltyProgramUser.Update(user);

            await _loyaltyContext.SaveChangesAsync();

            return(Ok(user));
        }
Ejemplo n.º 19
0
        public async Task allow_to_register_new_user()
        {
            var expected = new LoyaltyProgramUser(0, "Christian", 0, new LoyaltyProgramSettings());

            var registrationResponse = await this.sut.PostAsync("/users",
                                                                new StringContent(JsonSerializer.Serialize(expected), Encoding.UTF8, "application/json"));

            var newUser =
                await JsonSerializer.DeserializeAsync <LoyaltyProgramUser>(
                    await registrationResponse.Content.ReadAsStreamAsync(),
                    new JsonSerializerOptions { PropertyNameCaseInsensitive = true });

            var actual = await this.sut.GetAsync($"/users/{newUser?.Id}");

            var actualUser = JsonSerializer.Deserialize <LoyaltyProgramUser>(await actual.Content.ReadAsStringAsync(),
                                                                             new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            Assert.Equal(HttpStatusCode.OK, actual.StatusCode);
            Assert.Equal(expected.Name, actualUser?.Name);
        }
Ejemplo n.º 20
0
 public ActionResult <LoyaltyProgramUser> CreateUser([FromBody] LoyaltyProgramUser user) =>
 Created(new Uri($"/users/{RegisterUser(user).Id}", UriKind.Relative), RegisterUser(user));
Ejemplo n.º 21
0
 public async Task <HttpResponseMessage> UpdateUser(LoyaltyProgramUser user)
 {
     return(await __exponentialRetryPolicy.ExecuteAsync(() => DoUpdateUser(user)));
 }
Ejemplo n.º 22
0
 public ActionResult Put(int userId, [FromBody] LoyaltyProgramUser updatedUser)
 {
     // Store the updatedUser to a data store
     registeredUsers[userId] = updatedUser;
     return(Ok(updatedUser));
 }
Ejemplo n.º 23
0
 public ActionResult Post([FromBody] LoyaltyProgramUser newUser)
 {
     AddRegisteredUser(newUser);
     return(CreatedAtRoute("GetUser", new { userId = newUser.Id }, newUser));
 }
 public LoyaltyProgramUser UpdateUser(
     int userId,
     [FromBody] LoyaltyProgramUser user)
 => RegisteredUsers[userId] = user;
Ejemplo n.º 25
0
 public async Task <HttpResponseMessage> RegisterUser(LoyaltyProgramUser newUser)
 {
     return(await __exponentialRetryPolicy.ExecuteAsync(() => DoRegisterUser(newUser)));
 }