コード例 #1
0
ファイル: ProfileTests.cs プロジェクト: dyl10s/TimeTracker
        public async Task ViewProfileTest_ValidInfo()
        {
            UserDTO newUser = new UserDTO {
                Email     = "*****@*****.**",
                Password  = "******",
                FirstName = "Moxie",
                LastName  = "Bespin"
            };

            GenericResponseDTO <int> registerResponse = await authController.Register(newUser);

            Assert.IsTrue(registerResponse.Success);

            TestAuthHelpers.attachUserToContext(registerResponse.Data, controllers);

            ProfileDTO expectedProfileInfo = new ProfileDTO {
                FirstName = "Moxie",
                LastName  = "Bespin",
                Email     = "*****@*****.**",
                Projects  = new List <ProjectNameAndClientDTO>()
            };

            GenericResponseDTO <ProfileDTO> response = await profileController.GetUserProfile();

            Assert.IsTrue(response.Success);
            Assert.AreEqual(response.Data.FirstName, expectedProfileInfo.FirstName);
            Assert.AreEqual(response.Data.LastName, expectedProfileInfo.LastName);
            Assert.AreEqual(response.Data.Email, expectedProfileInfo.Email);
            Assert.IsTrue(response.Data.Projects.SequenceEqual(expectedProfileInfo.Projects));
        }
コード例 #2
0
ファイル: TimeEntryTests.cs プロジェクト: dyl10s/TimeTracker
        public TimeEntryTests()
        {
            timeEntryController = new TimeEntryController(database, new AuthHelper());
            projectController   = new ProjectController(database, new AuthHelper());

            TestAuthHelpers.LogInUser(database, configuration, new List <ControllerBase>()
            {
                timeEntryController,
                projectController
            }).GetAwaiter().GetResult();
        }
コード例 #3
0
ファイル: ProfileTests.cs プロジェクト: dyl10s/TimeTracker
        public async Task SetPasswordTest_ValidInfo()
        {
            UserDTO newUser = new UserDTO {
                Email     = "*****@*****.**",
                Password  = "******",
                FirstName = "Phoebe",
                LastName  = "S."
            };

            GenericResponseDTO <int> registerResponse = await authController.Register(newUser);

            Assert.IsTrue(registerResponse.Success);

            TestAuthHelpers.attachUserToContext(registerResponse.Data, controllers);

            GenericResponseDTO <AccessKeysDTO> loginResponse = await authController.Login(newUser);

            Assert.IsTrue(registerResponse.Success);

            PasswordChangeDTO passwordChangeInfo = new PasswordChangeDTO {
                CurrentPassword = "******",
                NewPassword     = "******"
            };
            GenericResponseDTO <int> changePasswordResponse = await profileController.SetPassword(passwordChangeInfo);

            Assert.IsTrue(changePasswordResponse.Success);

            User currentUser = await database.Users
                               .AsNoTracking()
                               .FirstOrDefaultAsync(user => user.Id == registerResponse.Data);

            Assert.IsTrue(authHelper.GetPasswordHash("Aero125", configuration).SequenceEqual(currentUser.Password));

            loginResponse = await authController.Login(newUser);

            Assert.IsFalse(loginResponse.Success);

            passwordChangeInfo.CurrentPassword = "******";
            passwordChangeInfo.NewPassword     = "******";
            changePasswordResponse             = await profileController.SetPassword(passwordChangeInfo);

            Assert.IsTrue(changePasswordResponse.Success);

            currentUser = await database.Users
                          .AsNoTracking()
                          .FirstOrDefaultAsync(user => user.Id == registerResponse.Data);

            Assert.IsTrue(authHelper.GetPasswordHash("Aquarius13", configuration).SequenceEqual(currentUser.Password));

            loginResponse = await authController.Login(newUser);

            Assert.IsTrue(loginResponse.Success);
        }
コード例 #4
0
        public async Task StartAndStopTimerTest()
        {
            await TestAuthHelpers.LogInUser(database, configuration, controllers);

            GenericResponseDTO <int> projectCreationResponse = await projectController.CreateProject(new ProjectCreateDTO {
                ProjectName = "A Cool Project",
                ClientName  = "Misha",
                Tags        = new List <string>(),
                Description = "A very cool Project"
            });

            Project project = (await database.Projects
                               .AsQueryable()
                               .FirstOrDefaultAsync(p => p.Id == projectCreationResponse.Data));

            project.Students
            .Add(project.Teacher);

            await database.SaveChangesAsync();

            int projectId = projectCreationResponse.Data;

            GenericResponseDTO <TimerDTO> startTimerResponse = await timerController.StartTimer(new TimerCreateDTO {
                Notes     = "Working on stuff",
                ProjectId = projectId
            });

            Assert.IsTrue(startTimerResponse.Success);
            Assert.AreEqual(startTimerResponse.Data.Notes, "Working on stuff");
            Assert.AreEqual(startTimerResponse.Data.ProjectId, projectId);

            GenericResponseDTO <List <TimerDTO> > getTimersResponse = await timerController.GetAllTimers();

            List <TimerDTO> timers = getTimersResponse.Data;

            Assert.AreEqual(timers.Count, 1);
            Assert.AreEqual(timers[0].ProjectId, projectId);
            Assert.IsTrue(timers[0].Notes.SequenceEqual("Working on stuff"));
            Assert.AreEqual(timers[0].StartTime, startTimerResponse.Data.StartTime);

            GenericResponseDTO <TimeEntryDTO> stopTimerResponse = await timerController.StopTimer(timers[0].Id);

            DateTime responseGottenTime = DateTime.UtcNow;

            Assert.IsTrue(stopTimerResponse.Success);
            Assert.IsTrue(stopTimerResponse.Data.ProjectId == projectId);
            Assert.AreEqual(stopTimerResponse.Data.Notes, "Working on stuff");
            Assert.AreEqual((responseGottenTime - stopTimerResponse.Data.Day).Minutes, 0);

            getTimersResponse = await timerController.GetAllTimers();

            Assert.AreEqual(getTimersResponse.Data.Count, 0);
        }
コード例 #5
0
ファイル: AuthTests.cs プロジェクト: dyl10s/TimeTracker
        public async Task AddUserToProjectOnLogin()
        {
            await TestAuthHelpers.LogInUser(database, configuration, projectController);

            ProjectCreateDTO projectInfo = new ProjectCreateDTO {
                ProjectName = "Soup Delivery Website",
                ClientName  = "Soup Delivery LLC"
            };

            GenericResponseDTO <int> createProjectResponse = await projectController.CreateProject(projectInfo);

            Assert.IsTrue(createProjectResponse.Success);

            int     projectID = createProjectResponse.Data;
            Project project   = await database.Projects
                                .AsNoTracking()
                                .FirstOrDefaultAsync(p => p.Id == projectID);

            string projectInviteCode = project.InviteCode;

            UserDTO registrationInfo = new UserDTO {
                Email     = "*****@*****.**",
                Password  = "******",
                FirstName = "Suzuya",
                LastName  = "Z."
            };

            GenericResponseDTO <int> registerResponse = await authController.Register(registrationInfo);

            Assert.IsTrue(registerResponse.Success);

            UserDTO loginInfo = new UserDTO {
                Email      = "*****@*****.**",
                Password   = "******",
                InviteCode = projectInviteCode
            };

            await authController.Login(loginInfo);

            User user = await database.Users
                        .Include(x => x.Projects)
                        .FirstOrDefaultAsync(u => u.Id == registerResponse.Data);

            Assert.IsTrue(user.Projects.Count == 1);
            Assert.IsTrue(user.Projects[0].Id == project.Id);
        }
コード例 #6
0
        public async Task GetTimerWithinDateRangeTest()
        {
            await TestAuthHelpers.LogInUser(database, configuration, controllers);

            GenericResponseDTO <int> projectCreationResponse = await projectController.CreateProject(new ProjectCreateDTO {
                ProjectName = "One MORE Cool Project",
                ClientName  = "Benjamin",
                Tags        = new List <string>(),
                Description = "Not a very cool project"
            });

            Project project = (await database.Projects
                               .AsQueryable()
                               .FirstOrDefaultAsync(p => p.Id == projectCreationResponse.Data));

            project.Students
            .Add(project.Teacher);

            await database.SaveChangesAsync();

            int projectId = projectCreationResponse.Data;

            GenericResponseDTO <TimerDTO> startTimerResponse = await timerController.StartTimer(new TimerCreateDTO {
                Notes     = "Didn't really do anything",
                ProjectId = projectId
            });

            Assert.IsTrue(startTimerResponse.Success);

            GenericResponseDTO <List <TimerDTO> > getTimerByIdResponse = await timerController.GetTimersWithinDateRange(DateTime.UtcNow, DateTime.UtcNow);

            Assert.IsTrue(getTimerByIdResponse.Success);
            Assert.AreEqual(getTimerByIdResponse.Data[0].Id, startTimerResponse.Data.Id);
            Assert.AreEqual(getTimerByIdResponse.Data[0].Notes, "Didn't really do anything");
            Assert.AreEqual(getTimerByIdResponse.Data[0].ProjectId, projectId);
            Assert.AreEqual(getTimerByIdResponse.Data[0].StartTime, startTimerResponse.Data.StartTime);

            DateTime tomorrow = DateTime.UtcNow + new TimeSpan(24, 0, 0);

            getTimerByIdResponse = await timerController.GetTimersWithinDateRange(tomorrow, tomorrow);

            Assert.AreEqual(getTimerByIdResponse.Data.Count, 0);
        }
コード例 #7
0
ファイル: ProfileTests.cs プロジェクト: dyl10s/TimeTracker
        public async Task SetPasswordTest_IncorrectVerificationPassword()
        {
            UserDTO newUser = new UserDTO {
                Email     = "*****@*****.**",
                Password  = "******",
                FirstName = "Basther",
                LastName  = "H."
            };

            GenericResponseDTO <int> registerResponse = await authController.Register(newUser);

            Assert.IsTrue(registerResponse.Success);

            TestAuthHelpers.attachUserToContext(registerResponse.Data, controllers);

            GenericResponseDTO <AccessKeysDTO> loginResponse = await authController.Login(newUser);

            Assert.IsTrue(loginResponse.Success);

            PasswordChangeDTO passwordChangeInfo = new PasswordChangeDTO {
                CurrentPassword = "******",
                NewPassword     = "******"
            };

            GenericResponseDTO <int> changePasswordResponse = await profileController.SetPassword(passwordChangeInfo);

            Assert.IsFalse(changePasswordResponse.Success);

            User currentUser = await database.Users
                               .AsNoTracking()
                               .FirstOrDefaultAsync(user => user.Id == registerResponse.Data);

            Assert.IsFalse(authHelper.GetPasswordHash("oNe4thRee9seVen", configuration).SequenceEqual(currentUser.Password));
            Assert.IsTrue(authHelper.GetPasswordHash("1fOur3niNe7", configuration).SequenceEqual(currentUser.Password));

            loginResponse = await authController.Login(newUser);

            Assert.IsTrue(loginResponse.Success);
        }
コード例 #8
0
ファイル: ProfileTests.cs プロジェクト: dyl10s/TimeTracker
        public async Task SetPasswordTest_InvalidNewPassword()
        {
            UserDTO newUser = new UserDTO {
                Email     = "*****@*****.**",
                Password  = "******",
                FirstName = "Belford",
                LastName  = "McAlister"
            };

            GenericResponseDTO <int> registerResponse = await authController.Register(newUser);

            Assert.IsTrue(registerResponse.Success);

            TestAuthHelpers.attachUserToContext(registerResponse.Data, controllers);

            GenericResponseDTO <AccessKeysDTO> loginResponse = await authController.Login(newUser);

            Assert.IsTrue(loginResponse.Success);

            PasswordChangeDTO passwordChangeInfo = new PasswordChangeDTO {
                CurrentPassword = "******",
                NewPassword     = "******"
            };
            GenericResponseDTO <int> changePasswordResponse = await profileController.SetPassword(passwordChangeInfo);

            Assert.IsFalse(changePasswordResponse.Success);

            User currentUser = await database.Users
                               .AsNoTracking()
                               .FirstOrDefaultAsync(user => user.Id == registerResponse.Data);

            Assert.IsFalse(authHelper.GetPasswordHash("badpw", configuration).SequenceEqual(currentUser.Password));
            Assert.IsTrue(authHelper.GetPasswordHash("sand_Boa13", configuration).SequenceEqual(currentUser.Password));

            loginResponse = await authController.Login(newUser);

            Assert.IsTrue(loginResponse.Success);
        }
コード例 #9
0
        public async Task GetTimerByIdTest()
        {
            await TestAuthHelpers.LogInUser(database, configuration, controllers);

            GenericResponseDTO <int> projectCreationResponse = await projectController.CreateProject(new ProjectCreateDTO {
                ProjectName = "Another Cool Project",
                ClientName  = "Tristam",
                Tags        = new List <string>(),
                Description = "An even COOLER project :)"
            });

            Project project = (await database.Projects
                               .AsQueryable()
                               .FirstOrDefaultAsync(p => p.Id == projectCreationResponse.Data));

            project.Students
            .Add(project.Teacher);

            await database.SaveChangesAsync();

            int projectId = projectCreationResponse.Data;

            GenericResponseDTO <TimerDTO> startTimerResponse = await timerController.StartTimer(new TimerCreateDTO {
                Notes     = "Working on things",
                ProjectId = projectId
            });

            Assert.IsTrue(startTimerResponse.Success);

            GenericResponseDTO <TimerDTO> getTimerByIdResponse = await timerController.GetTimerById(startTimerResponse.Data.Id);

            Assert.IsTrue(getTimerByIdResponse.Success);
            Assert.AreEqual(getTimerByIdResponse.Data.Id, startTimerResponse.Data.Id);
            Assert.AreEqual(getTimerByIdResponse.Data.Notes, "Working on things");
            Assert.AreEqual(getTimerByIdResponse.Data.ProjectId, projectId);
            Assert.AreEqual(getTimerByIdResponse.Data.StartTime, startTimerResponse.Data.StartTime);
        }
コード例 #10
0
ファイル: ReportTests.cs プロジェクト: dyl10s/TimeTracker
        private async Task <int> setupTest()
        {
            // Create a project and time entry
            var mainProject = await projectController.CreateProject(new ProjectCreateDTO()
            {
                ClientName  = "Spongebob Squarepants",
                Description = "Eat spongebob's pineapple house",
                ProjectName = "Eat Pineapple",
                Tags        = new List <string>()
                {
                    "Food"
                }
            });

            var timeEntries = new List <TimeEntryDTO>()
            {
                new TimeEntryDTO()
                {
                    CreatedTime = DateTime.Now,
                    Day         = new DateTime(1999, 1, 10),
                    Length      = 5,
                    Notes       = "Consumed leafs",
                    ProjectId   = mainProject.Data
                },
                new TimeEntryDTO()
                {
                    CreatedTime = DateTime.Now,
                    Day         = new DateTime(1999, 1, 10),
                    Length      = 2,
                    Notes       = "Consumed Door",
                    ProjectId   = mainProject.Data
                },
                new TimeEntryDTO()
                {
                    CreatedTime = DateTime.Now,
                    Day         = new DateTime(1999, 1, 10),
                    Length      = 3,
                    Notes       = "Consumed back of pineapple",
                    ProjectId   = mainProject.Data
                }
            };

            foreach (var entry in timeEntries)
            {
                await timeEntryController.CreateTime(entry);
            }

            // Get project invite code
            var projectDetails = await projectController.GetProjectById(mainProject.Data);

            // Login as 2nd user
            TestAuthHelpers.LogInUser(database, configuration, new List <ControllerBase>()
            {
                timeEntryController,
                projectController,
                reportController
            }, projectDetails.Data.InviteCode).GetAwaiter().GetResult();

            var timeEntries2 = new List <TimeEntryDTO>()
            {
                new TimeEntryDTO()
                {
                    CreatedTime = DateTime.Now,
                    Day         = new DateTime(2000, 1, 10),
                    Length      = 1,
                    Notes       = "Consumed left window",
                    ProjectId   = mainProject.Data
                },
                new TimeEntryDTO()
                {
                    CreatedTime = DateTime.Now,
                    Day         = new DateTime(2000, 1, 10),
                    Length      = 1,
                    Notes       = "Consumed right window",
                    ProjectId   = mainProject.Data
                }
            };

            foreach (var entry in timeEntries2)
            {
                await timeEntryController.CreateTime(entry);
            }

            return(mainProject.Data);
        }
コード例 #11
0
ファイル: ProjectTests.cs プロジェクト: dyl10s/TimeTracker
        public ProjectTests()
        {
            projectController = new ProjectController(database, new AuthHelper());

            TestAuthHelpers.LogInUser(database, configuration, projectController).GetAwaiter().GetResult();
        }