public TicketData CreateTestData() { using (var context = new TicketingSystemDBContext()) { JobType j = new JobType(); j.JobName = "Miscellaneous"; RecordRetriever rr = new RecordRetriever(); var records = rr.RetrieveRecords(10); Users ticketWorker = context.Users.Where(u => u.FullName == "Test User").FirstOrDefault(); Users entryAuthor = context.Users.Where(w => w.FullName == "Test User").FirstOrDefault(); TicketData td = new TicketData() { TripNum = -1, StageNum = "S01", JobType = j, EntryAuthor = entryAuthor, EntryAuthorId = entryAuthor.UserId, TicketWorker = ticketWorker, TicketWorkerId = ticketWorker.UserId, WorkerName = "Test User", StartTime = "12:00", EndTime = "12:00", StartDate = DateTime.Today, EndDate = DateTime.Today, Comments = "Entry generated by HomeController.PostEntry unit test" }; return(td); } }
/// <summary> /// Function to log changes in entries to the database /// </summary> /// <param name="action"></param> /// <param name="details"></param> /// <param name="entryID"></param> /// <param name="changedByUserID"></param> /// <returns></returns> public bool LogChange(string action, string details, int entryID, int changedByUserID) { try { using (var context = new TicketingSystemDBContext()) { TicketDataLog tdLog = new TicketDataLog() { ChangedByUserId = changedByUserID, ChangeTime = DateTime.Now, DataAction = action, Details = details, EntryId = entryID }; context.TicketDataLog.Add(tdLog); context.SaveChanges(); } } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } return(true); }
/// <summary> /// Updates the user in the database after creation in Auth0 /// </summary> /// <param name="Auth0ID"></param> /// <returns>Boolean indicating success</returns> public static bool UpdateDBUser(string Auth0ID) { try { if (!ValidateToken()) { InitAPIToken(); } using (var db = new TicketingSystemDBContext()) { //get the Auth0Id from Auth0 UserData ud = GetUserData(Auth0ID); var u = db.Users.Where(uid => uid.Email == ud.email).FirstOrDefault(); u.Auth0Uid = ud.user_id; db.SaveChanges(); } return(true); } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } }
/// <summary> /// Function to import new users from Auth0 /// </summary> /// <returns></returns> public bool ImportUsersFromAuth0() { try { using (var db = new TicketingSystemDBContext()) { var users = Auth0APIClient.GetAllUsers(); foreach (var u in users) { if (!db.Users.Where(usr => usr.Email == u.email).Any()) { string shiftType = Auth0APIClient.GetUserRole(u.user_id)[0].name; Users newUser = new Users(); newUser.Auth0Uid = u.user_id; newUser.FullName = u.name; newUser.Email = u.email; newUser.ShiftType = shiftType; CreateAndAddUser(newUser); } } } return(true); } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } }
/// <summary> /// Function to update users in the database from Auth0 /// </summary> /// <returns></returns> public bool UpdateUsersFromAuth0() { try { using (var db = new TicketingSystemDBContext()) { var users = Auth0APIClient.GetAllUsers(); foreach (var user in users) { Users dbuser = db.Users.Where(u => u.Auth0Uid == user.user_id).FirstOrDefault(); if (dbuser != null) { dbuser.Email = user.email; dbuser.FullName = user.name; var roles = Auth0APIClient.GetUserRole(dbuser.Auth0Uid); dbuser.ShiftType = roles.ElementAt(0).name; db.Users.Update(dbuser); db.SaveChanges(); } } } return(true); } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } }
public void GetUserByIDTest() { using (var db = new TicketingSystemDBContext()) { int userId = db.Users.FirstOrDefault().UserId; var actual = um.GetUserByID(userId); Assert.IsNotNull(actual); Assert.AreEqual(userId, actual.UserId); } }
public void GetUsersTest() { var actual = um.GetUsers(); List <Users> expected; using (var db = new TicketingSystemDBContext()) { expected = db.Users.ToList(); } Assert.IsNotNull(actual); }
public static void Cleanup() { using (var db = new TicketingSystemDBContext()) { Users user = db.Users.Where(u => u.FullName == "Test User").FirstOrDefault(); var data = db.TicketData.Where(t => t.EntryAuthorId == user.UserId); db.TicketData.RemoveRange(data); db.SaveChanges(); } }
public void UpdateDBUserTest() { using (var db = new TicketingSystemDBContext()) { Users user = db.Users.Where(u => u.FullName == "Test User").FirstOrDefault(); var actual = Auth0APIClient.UpdateDBUser(user.Auth0Uid); Assert.IsNotNull(actual); Assert.IsTrue(actual); } }
public static TicketData GetTestData() { using (var db = new TicketingSystemDBContext()) { Users user = db.Users.Where(u => u.FullName == "Test User").FirstOrDefault(); TicketData td = db.TicketData.Where(t => t.EntryAuthorId == user.UserId).FirstOrDefault(); td.EntryAuthor = user; td.TicketWorker = db.Users.Where(u => u.UserId == td.TicketWorkerId).FirstOrDefault(); td.JobType = db.JobType.Where(jt => jt.JobTypeId == td.JobTypeId).FirstOrDefault(); return(td); } }
/// <summary> /// Posts the new ticket entry to the database /// </summary> /// <param name="td"></param> /// <param name="loggedInUser"></param> /// <returns></returns> public bool PostEntry(TicketData td, UserData loggedInUser) { try { using (var context = new TicketingSystemDBContext()) { IEnumerable<JobType> jobs = context.JobType; int jtypeID = 1; jtypeID = context.JobType.Where(j => j.JobName == td.JobType.JobName).FirstOrDefault().JobTypeId; int authorID = context.Users.Where(a => a.Auth0Uid == loggedInUser.user_id).FirstOrDefault().UserId; var worker = context.Users.Where(w => w.FullName == td.TicketWorker.FullName).FirstOrDefault(); int workerID; if (worker != null) { workerID = worker.UserId; td.TicketWorkerId = workerID; } else { throw new Exception("Error, Employee with name: " + worker.FullName + " not found in System"); } td.JobTypeId = jtypeID; td.TicketClosed = false; td.EntryAuthorId = authorID; td.WorkerName = td.TicketWorker.FullName; td.StartDate = DateTime.Today; //very important null assignment td.JobType = null; td.TicketWorker = null; td.EntryAuthor = null; context.TicketData.Add(td); context.SaveChanges(); int entryID = td.EntryId; TicketDataLogger tdl = new TicketDataLogger(); tdl.LogChange("new entry", "created new entry", entryID, authorID); } } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } return true; }
public async Task PostEditorTest(TicketData td) { using (var db = new TicketingSystemDBContext()) { ViewResult result = await ec.PostEdit(td); RecordRetriever rr = new RecordRetriever(); ViewResult testView = View("Index", rr.RetrieveRecords(10)); Assert.IsNotNull(result); Assert.AreEqual(testView.ViewName, result.ViewName); } }
/// <summary> /// Get a database user given their full name /// </summary> /// <param name="name"></param> /// <returns></returns> public static Users GetUserByName(string name) { try { using (var db = new TicketingSystemDBContext()) { return(db.Users.Where(u => u.FullName == name).First()); } } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } }
/// <summary> /// Function to return all of the users in the database /// </summary> /// <returns></returns> public IEnumerable <Users> GetUsers() { try { using (var db = new TicketingSystemDBContext()) { return(db.Users.ToList()); } } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } }
/// <summary> /// Gets the user with the given ID /// </summary> /// <param name="userID"></param> /// <returns></returns> public Users GetUserByID(int userID) { try { using (var db = new TicketingSystemDBContext()) { return(db.Users.Find(userID)); } } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } }
/// <summary> /// Posts the edited TicketData object to the database and logs the user who triggered it /// </summary> /// <param name="td">The ticket data instance to update</param> /// <param name="loggedInUser">The currently logged user</param> /// <returns></returns> public bool PostEditor(TicketData td, UserData loggedInUser) { try { using (var context = new TicketingSystemDBContext()) { int jtypeID; jtypeID = context.JobType.Where(j => j.JobName == td.JobType.JobName).FirstOrDefault().JobTypeId; int authorID = -1; int workerID; var author = context.Users.Where(a => a.Auth0Uid == loggedInUser.user_id).FirstOrDefault(); var worker = context.Users.Where(w => w.FullName == td.TicketWorker.FullName).FirstOrDefault(); if (author != null) { authorID = author.UserId; td.EntryAuthorId = authorID; } if (worker != null) { workerID = worker.UserId; td.TicketWorkerId = workerID; } td.JobTypeId = jtypeID; td.WorkerName = td.TicketWorker.FullName; //very important null assignment td.JobType = null; td.TicketWorker = null; td.EntryAuthor = null; context.TicketData.Update(td); context.SaveChanges(); TicketDataLogger tdl = new TicketDataLogger(); tdl.LogChange("new edits", "edited entry", td.EntryId, authorID); } } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } return(true); }
public void GetRecordByIDTest() { using (var context = new TicketingSystemDBContext()) { var td = TestUtility.CreateTestData(); DataEntry de = new DataEntry(); Users dbUser = context.Users.Where(u => u.FullName == "Test User").FirstOrDefault(); de.PostEntry(td, Auth0APIClient.GetUserData(dbUser.Auth0Uid)); int id = context.TicketData.First().EntryId; RecordRetriever rr = new RecordRetriever(); var res = rr.GetRecordByID(id); Assert.IsNotNull(res); Assert.IsTrue(res.GetType() == typeof(TicketData)); } }
public void LogChangeTest() { TicketDataLogger tdl = new TicketDataLogger(); string action = "LogChangeTest", details = "Entry generated by TicketDataLogger.LogChange unit test"; using (var context = new TicketingSystemDBContext()) { var data = context.TicketData.FirstOrDefault(); var user = context.Users.First(); if (data != null) { Assert.IsTrue(tdl.LogChange(action, details, data.EntryId, user.UserId)); } } }
/// <summary> /// Gets the TicketData entry based on Entry ID of ticket clicked on in HomePage table /// </summary> /// <param name="entryID">Entry ID specified in HomePage table</param> /// <returns>JSON containing redirect URL</returns> public async Task <JsonResult> OpenEntry(string entryID) { try { Authorize(); } catch (HttpResponseException e) { return(Json(new { newUrl = Url.Action("Error", Utility.CreateHttpErrorView(e, "401 Unauthorized")) })); } try { using (var context = new TicketingSystemDBContext()) { int id = int.Parse(entryID); RecordRetriever rr = new RecordRetriever(); TicketData td = rr.GetRecordByID(id); return(Json(new { newUrl = Url.Action("EntryClose", "Home", td) })); } } catch (HttpResponseException e) { string guid = ExceptionReporter.DumpException(e); ServerErrorViewModel error = await Utility.CreateServerErrorView(e); return(Json(new { newUrl = Url.Action("ServerError", error) })); } catch (Exception e) { string guid = ExceptionReporter.DumpException(e); return(Json(new { newUrl = Url.Action("Error", Utility.CreateBasicExceptionView(e, guid)) })); } }
public void PostEditTest() { using (var context = new TicketingSystemDBContext()) { TicketData td = TestUtility.CreateTestData(); DataEditor DaEd = new DataEditor(); Users dbUser = context.Users.Where(u => u.FullName == "Test User").FirstOrDefault(); UserData ud = Auth0APIClient.GetUserData(dbUser.Auth0Uid); var result = DaEd.PostEditor(td, ud); DeleteEntryTest(td, ud); Assert.IsTrue(result); } }
public void CreateUserTest() { using (var db = new TicketingSystemDBContext()) { Users newUser = TestUtility.CreateTestUser(); Users loggedUser = db.Users.Where(u => u.FullName == "Test User").FirstOrDefault(); UserData userData = Auth0APIClient.GetUserData(loggedUser.Auth0Uid); bool actual = um.CreateUser(newUser, userData); ToggleActivationTest(newUser); DeleteUserTest(newUser); Assert.IsTrue(actual); } }
/// <summary> /// Function to delete a user from the Database /// </summary> /// <param name="UserId"></param> /// <returns></returns> public bool DeleteUser(int UserId) { try { using (var db = new TicketingSystemDBContext()) { Users user = db.Users.Find(UserId); db.Users.Remove(user); db.SaveChanges(); return(true); } } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } }
/// <summary> /// Gets the TicketData entry based on the entryID input in Index page /// </summary> /// <param name="entryId">Entry ID input from index</param> /// <returns>JSON holding redirect URL</returns> public async Task <JsonResult> GetRecord(string entryId) { try { Authorize(); } catch (HttpResponseException e) { return(Json(new { newUrl = Url.Action("Error", "Edit", Utility.CreateHttpErrorView(e, "You do not have the permissions to view this page")) })); } try { using (var context = new TicketingSystemDBContext()) { RecordRetriever rr = new RecordRetriever(); var result = rr.GetRecordByID(int.Parse(entryId)); return(Json(new { newUrl = Url.Action("EditForm", "Edit", result) })); } } catch (HttpResponseException e) { string guid = ExceptionReporter.DumpException(e); ServerErrorViewModel error = await Utility.CreateServerErrorView(e); return(Json(new { newUrl = Url.Action("ServerError", error) })); } catch (Exception e) { string guid = ExceptionReporter.DumpException(e); return(Json(new { newUrl = Url.Action("Error", Utility.CreateBasicExceptionView(e, guid)) })); } }
/// <summary> /// Get the record with the given entryID /// </summary> /// <param name="entryID"></param> /// <returns></returns> public TicketData GetRecordByID(int entryID) { try { using (var context = new TicketingSystemDBContext()) { TicketData td = context.TicketData.Find(entryID); td.JobType = context.JobType.Find(td.JobTypeId); td.EntryAuthor = context.Users.Find(td.EntryAuthorId); td.TicketWorker = context.Users.Find(td.TicketWorkerId); return(td); } } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } }
/// <summary> /// Closes the specified ticket data entry /// </summary> /// <param name="td"></param> /// <returns></returns> public bool CloseTicket(TicketData td) { try { using (var context = new TicketingSystemDBContext()) { context.TicketData.Find(td.EntryId).TicketClosed = true; context.TicketData.Find(td.EntryId).EndTime = td.EndTime; context.TicketData.Find(td.EntryId).EndDate = td.EndDate; context.SaveChanges(); } } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } return true; }
//Not supported due to management API restrictions //public bool UpdateUser(Users user) //{ // try // { // using (var db = new TicketingSystemDBContext()) // { // Users oldUser = db.Users.Find(user.UserId); // string oldShiftType = oldUser.ShiftType; // oldUser.Email = user.Email; // oldUser.FullName = user.FullName; // oldUser.ShiftType = user.ShiftType; // db.Users.Update(oldUser); // db.SaveChanges(); // // Auth0APIClient.UpdateUser(oldUser); // Auth0APIClient.UpdateRole(oldUser.Auth0Uid, oldShiftType, user.ShiftType); // } // } // catch (Exception e) // { // throw new HttpResponseException(Utility.CreateResponseMessage(e)); // } // return true; //} /// <summary> /// Function to delete a user from DB and Auth0 /// </summary> /// <param name="UserId"></param> /// <returns></returns> public bool ToggleActivation(int UserId) { try { using (var db = new TicketingSystemDBContext()) { Users user = db.Users.Find(UserId); string auth0ID = user.Auth0Uid; user.IsActive = !user.IsActive; db.Users.Update(user); db.SaveChanges(); return(true); } } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } }
/// <summary> /// Get a list of names of users who are in the system /// </summary> /// <returns></returns> public static List <string> GetValidNames() { List <string> userNames = new List <string>(); try { using (var db = new TicketingSystemDBContext()) { var users = db.Users.ToList(); foreach (Users u in users) { userNames.Add(u.FullName); } } return(userNames); } catch (Exception e) { throw new HttpResponseException(Utility.CreateResponseMessage(e)); } }
public async Task EditFormTest() { using (var db = new TicketingSystemDBContext()) { Users user = db.Users.Where(u => u.FullName == "Test User").FirstOrDefault(); DataEntry de = new DataEntry(); de.PostEntry(TestUtility.CreateTestData(), Auth0APIClient.GetUserData(user.Auth0Uid)); TicketData td = db.TicketData.Where(t => t.EntryAuthorId == user.UserId).FirstOrDefault(); td.JobType = db.JobType.Where(jt => jt.JobTypeId == td.JobTypeId).FirstOrDefault(); ViewResult result = await ec.EditForm(td); ViewResult testView = View("EditForm", td); await PostEditorTest(td); Assert.IsNotNull(result); Assert.AreEqual(testView.ViewName, result.ViewName); } }
public EditControllerTests() { Users dbUser; using (var db = new TicketingSystemDBContext()) { dbUser = db.Users.Where(u => u.FullName == "Test User").First(); } var user = new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, dbUser.Auth0Uid) }, "mock")); ec = new EditController(); ec.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext { User = user } }; }
public static void UserCleanup() { UserManager um = new UserManager(); using (var db = new TicketingSystemDBContext()) { var dbUsers = db.Users.Where(u => u.FullName == "Unit Test User").ToList(); foreach (Users u in dbUsers) { um.DeleteUser(u.UserId); } var auth0Users = Auth0APIClient.GetAllUsers(); foreach (var u in auth0Users) { if (u.name == "Unit Test User") { Auth0APIClient.DeleteUser(u.user_id); } } } }