示例#1
0
        /// <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)));
        }
示例#2
0
        /// <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));
        }
示例#3
0
        /// <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());
        }
示例#4
0
        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);
        }
示例#5
0
        /// <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));
            }
        }
示例#6
0
 public virtual IActionResult UsersIdGroupsPost([FromRoute] int id, [FromBody] GroupMembershipViewModel item)
 {
     return(this._service.UsersIdGroupsPostAsync(id, item));
 }
示例#7
0
        /// <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();
 }
示例#9
0
        /// <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);
        }