/// <summary> /// Get groups associated with a user /// </summary> /// <remarks>Returns all groups that a user is a member of</remarks> /// <param name="id">id of User to fetch</param> /// <response code="200">OK</response> /// <response code="404">User not found</response> public virtual IActionResult UsersIdGroupsGetAsync(int id) { User user = _context.Users .Include(x => x.GroupMemberships) .ThenInclude(y => y.Group) .First(x => x.Id == id); if (user == null) { // record not found return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); } List <GroupMembershipViewModel> result = new List <GroupMembershipViewModel>(); List <GroupMembership> data = user.GroupMemberships; foreach (GroupMembership item in data) { if (item != null) { GroupMembershipViewModel record = item.ToViewModel(); result.Add(record); } } return(new ObjectResult(new HetsResponse(result))); }
/// <summary> /// /// </summary> /// <remarks>Returns all groups that a user is a member of</remarks> /// <param name="id">id of User to fetch</param> /// <response code="200">OK</response> /// <response code="404">User not found</response> public virtual IActionResult UsersIdGroupsGetAsync(int id) { var user = _context.Users .Include(x => x.GroupMemberships) .ThenInclude(y => y.Group) .First(x => x.Id == id); if (user == null) { // Not Found return(new StatusCodeResult(404)); } var result = new List <GroupMembershipViewModel>(); var data = user.GroupMemberships; foreach (var item in data) { if (item != null) { GroupMembershipViewModel record = item.ToViewModel(); result.Add(record); } } return(new ObjectResult(result)); }
/// <summary> /// Add a user to a group /// </summary> /// <remarks>Adds a user to groups</remarks> /// <param name="id">id of User to update</param> /// <param name="item"></param> /// <response code="200">OK</response> /// <response code="404">User not found</response> public virtual IActionResult UsersIdGroupsPostAsync(int id, GroupMembershipViewModel item) { bool exists = _context.Users.Any(a => a.Id == id); // record not found if (!exists || item == null) { return(new ObjectResult(new HetsResponse("HETS-01", ErrorViewModel.GetDescription("HETS-01", _configuration)))); } // update the given user's group membership. User user = _context.Users .Include(x => x.District) .Include(x => x.GroupMemberships) .ThenInclude(y => y.Group) .Include(x => x.UserRoles) .ThenInclude(y => y.Role) .ThenInclude(z => z.RolePermissions) .ThenInclude(z => z.Permission) .First(a => a.Id == id); // add new item bool found = false; foreach (GroupMembership parameterItem in user.GroupMemberships) { if (parameterItem.Group != null && parameterItem.Group.Id == item.GroupId) { found = true; } } if (found) { return(new NoContentResult()); } GroupMembership groupMembership = new GroupMembership { User = user }; // set user and group. bool groupExists = _context.Groups.Any(a => a.Id == item.GroupId); if (groupExists) { Group group = _context.Groups.First(a => a.Id == item.GroupId); groupMembership.Group = group; } user.GroupMemberships.Add(groupMembership); _context.Update(user); _context.SaveChanges(); return(new NoContentResult()); }
public static GroupMembershipViewModel ToViewModel(this GroupMembership model) { var dto = new GroupMembershipViewModel(); dto.Active = model.Active; dto.GroupId = model.Group.Id; dto.UserId = model.User.Id; dto.Id = model.Id; return(dto); }
/// <summary> /// /// </summary> /// <remarks>Adds a user to groups</remarks> /// <param name="id">id of User to update</param> /// <param name="items"></param> /// <response code="200">OK</response> /// <response code="404">User not found</response> public virtual IActionResult UsersIdGroupsPostAsync(int id, GroupMembershipViewModel item) { bool exists = _context.Users.Any(a => a.Id == id); if (exists && item != null) { // update the given user's group membership. User user = _context.Users .Include(x => x.District) .Include(x => x.GroupMemberships) .ThenInclude(y => y.Group) .Include(x => x.UserRoles) .ThenInclude(y => y.Role) .ThenInclude(z => z.RolePermissions) .ThenInclude(z => z.Permission) .First(a => a.Id == id); // add new item bool found = false; foreach (GroupMembership parameterItem in user.GroupMemberships) { if (parameterItem.Group != null && parameterItem.Group.Id == item.GroupId) { found = true; } } if (found == false && item.GroupId != null) { GroupMembership groupMembership = new GroupMembership(); // set user and group. groupMembership.User = user; bool group_exists = _context.Groups.Any(a => a.Id == item.GroupId); if (group_exists) { Group group = _context.Groups.First(a => a.Id == item.GroupId); groupMembership.Group = group; } user.GroupMemberships.Add(groupMembership); _context.Update(user); _context.SaveChanges(); } return(new NoContentResult()); } else { // record not found return(new StatusCodeResult(404)); } }
public virtual IActionResult UsersIdGroupsPost([FromRoute] int id, [FromBody] GroupMembershipViewModel item) { return(this._service.UsersIdGroupsPostAsync(id, item)); }
/// <summary> /// Integration test for User Delete /// </summary> public async void TestUserDelete() { // first create a role. string initialName = "InitialName"; var request = new HttpRequestMessage(HttpMethod.Post, "/api/roles"); RoleViewModel role = new RoleViewModel(); role.Name = initialName; role.Description = "test"; string jsonString = role.ToJson(); request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json"); var response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // parse as JSON. jsonString = await response.Content.ReadAsStringAsync(); role = JsonConvert.DeserializeObject <RoleViewModel>(jsonString); // get the role id var role_id = role.Id; // now create a user. request = new HttpRequestMessage(HttpMethod.Post, "/api/users"); UserViewModel user = new UserViewModel(); user.GivenName = initialName; jsonString = user.ToJson(); request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // parse as JSON. jsonString = await response.Content.ReadAsStringAsync(); user = JsonConvert.DeserializeObject <UserViewModel>(jsonString); // get the user id var user_id = user.Id; // now add the user to the role. UserRoleViewModel userRole = new UserRoleViewModel(); userRole.RoleId = role_id; userRole.UserId = user_id; userRole.EffectiveDate = DateTime.UtcNow; UserRoleViewModel[] items = new UserRoleViewModel[1]; items[0] = userRole; // send the request. request = new HttpRequestMessage(HttpMethod.Put, "/api/roles/" + role_id + "/users"); jsonString = JsonConvert.SerializeObject(items, Formatting.Indented); request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // if we do a get we should get the same items. request = new HttpRequestMessage(HttpMethod.Get, "/api/roles/" + role_id + "/users"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // parse as JSON. jsonString = await response.Content.ReadAsStringAsync(); User[] userRolesResponse = JsonConvert.DeserializeObject <User[]>(jsonString); Assert.Equal(items[0].UserId, userRolesResponse[0].Id); // now add a group to the user SchoolBusAPI.Models.User newUser = new SchoolBusAPI.Models.User(); newUser.Id = user.Id; // now create a Group request = new HttpRequestMessage(HttpMethod.Post, "/api/groups"); Group group = new Group(); group.Name = "initialName"; jsonString = user.ToJson(); request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // parse as JSON. jsonString = await response.Content.ReadAsStringAsync(); group = JsonConvert.DeserializeObject <Group>(jsonString); // get the id int group_id = user.Id; // assign user to group GroupMembershipViewModel groupMembership = new GroupMembershipViewModel(); groupMembership.UserId = newUser.Id; groupMembership.GroupId = group.Id; GroupMembershipViewModel[] groupmembershipItems = new GroupMembershipViewModel[1]; groupmembershipItems[0] = groupMembership; // send the request. request = new HttpRequestMessage(HttpMethod.Put, "/api/users/" + user_id + "/groups"); jsonString = JsonConvert.SerializeObject(groupmembershipItems, Formatting.Indented); request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // verify the group membership request = new HttpRequestMessage(HttpMethod.Get, "/api/groups/" + group_id + "/users"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); jsonString = await response.Content.ReadAsStringAsync(); User[] users = JsonConvert.DeserializeObject <User[]>(jsonString); bool found = false; foreach (User item in users) { if (item != null && item.Id == user_id) { found = true; } } Assert.Equal(found, true); // cleanup // Delete user request = new HttpRequestMessage(HttpMethod.Post, "/api/users/" + user_id + "/delete"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // should get a 404 if we try a get now. request = new HttpRequestMessage(HttpMethod.Get, "/api/users/" + user_id); response = await _client.SendAsync(request); Assert.Equal(response.StatusCode, HttpStatusCode.NotFound); // Delete role request = new HttpRequestMessage(HttpMethod.Post, "/api/roles/" + role_id + "/delete"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // should get a 404 if we try a get now. request = new HttpRequestMessage(HttpMethod.Get, "/api/roles/" + role_id); response = await _client.SendAsync(request); Assert.Equal(response.StatusCode, HttpStatusCode.NotFound); // delete the group request = new HttpRequestMessage(HttpMethod.Post, "/api/groups/" + group_id + "/delete"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // should get a 404 if we try a get now. request = new HttpRequestMessage(HttpMethod.Get, "/api/groups/" + group_id); response = await _client.SendAsync(request); Assert.Equal(response.StatusCode, HttpStatusCode.NotFound); }
/// <summary> /// Setup the test. /// </summary> public GroupMembershipViewModelModelTests() { instance = new GroupMembershipViewModel(); }
/// <summary> /// /// </summary> /// <remarks>Add to the active set of groups for a user</remarks> /// <param name="id">id of User to update</param> /// <param name="item"></param> /// <response code="200">OK</response> /// <response code="404">User not found</response> public virtual IActionResult UsersIdGroupsPostAsync(int id, GroupMembershipViewModel item) { var result = ""; return(new ObjectResult(result)); }
/// <summary> /// Integration test for GroupsGet /// </summary> public async void TestGroups() { // this test will do the following: // 1. Create a User // 2. Create a Group // 3. Assign the User to the Group // 4. Verify that the User is in the Group // 5. Remove the User from the group // 6. Delete the Group // 7. Delete the User string initialName = "InitialName"; string changedName = "ChangedName"; // first test the POST. var request = new HttpRequestMessage(HttpMethod.Post, "/api/users"); // create a new object. User user = new User(); user.GivenName = initialName; string jsonString = user.ToJson(); request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json"); var response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // parse as JSON. jsonString = await response.Content.ReadAsStringAsync(); user = JsonConvert.DeserializeObject <User>(jsonString); // get the id int user_id = user.Id; // now create a Group request = new HttpRequestMessage(HttpMethod.Post, "/api/groups"); Group group = new Group(); group.Name = "initialName"; jsonString = group.ToJson(); request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // parse as JSON. jsonString = await response.Content.ReadAsStringAsync(); group = JsonConvert.DeserializeObject <Group>(jsonString); // get the id int group_id = group.Id; // assign user to group GroupMembershipViewModel groupMembership = new GroupMembershipViewModel(); groupMembership.UserId = user.Id; groupMembership.GroupId = group.Id; GroupMembershipViewModel[] items = new GroupMembershipViewModel[1]; items[0] = groupMembership; // send the request. request = new HttpRequestMessage(HttpMethod.Put, "/api/users/" + user_id + "/groups"); jsonString = JsonConvert.SerializeObject(items, Formatting.Indented); request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // verify the group membership request = new HttpRequestMessage(HttpMethod.Get, "/api/groups/" + group_id + "/users"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); jsonString = await response.Content.ReadAsStringAsync(); User[] users = JsonConvert.DeserializeObject <User[]>(jsonString); bool found = false; foreach (User item in users) { if (item != null && item.Id == user_id) { found = true; } } Assert.Equal(found, true); // remove the user from the group items = new GroupMembershipViewModel[0]; request = new HttpRequestMessage(HttpMethod.Put, "/api/users/" + user_id + "/groups"); jsonString = JsonConvert.SerializeObject(items, Formatting.Indented); request.Content = new StringContent(jsonString, Encoding.UTF8, "application/json"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // verify the group membership - should be false now. request = new HttpRequestMessage(HttpMethod.Get, "/api/groups/" + group_id + "/users"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); jsonString = await response.Content.ReadAsStringAsync(); users = JsonConvert.DeserializeObject <User[]>(jsonString); found = false; foreach (User item in users) { if (item != null && item.Id == user_id) { found = true; } } Assert.Equal(found, false); // delete the group request = new HttpRequestMessage(HttpMethod.Post, "/api/groups/" + group_id + "/delete"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // should get a 404 if we try a get now. request = new HttpRequestMessage(HttpMethod.Get, "/api/groups/" + group_id); response = await _client.SendAsync(request); Assert.Equal(response.StatusCode, HttpStatusCode.NotFound); // do a delete. request = new HttpRequestMessage(HttpMethod.Post, "/api/users/" + user_id + "/delete"); response = await _client.SendAsync(request); response.EnsureSuccessStatusCode(); // should get a 404 if we try a get now. request = new HttpRequestMessage(HttpMethod.Get, "/api/users/" + user_id); response = await _client.SendAsync(request); Assert.Equal(response.StatusCode, HttpStatusCode.NotFound); }