Exemple #1
0
        public void LoggedUsers_GetUser()
        {
            var loggedUsers = LoggedUsers.GetInstance();
            var user1       = new UserFactory().CreateAdmin(new User
            {
                Id       = 21,
                Login    = "******",
                Password = new Encryption.HasherFactory().GetHasher().Hash("Pass"),
                Rank     = Rank.Administrator
            });

            var(_, token1) = loggedUsers.LogInUser(user1);
            var user2 = new UserFactory().CreateStudent(new User
            {
                Id       = 22,
                Login    = "******",
                Password = new Encryption.HasherFactory().GetHasher().Hash("Pass1"),
                Rank     = Rank.Student
            }, new StudentData());

            var(_, token2) = loggedUsers.LogInUser(user2);
            // pobranie User1
            Assert.IsTrue(Object.ReferenceEquals(user1, loggedUsers.GetUser(token1)));
            // pobranie User2
            Assert.IsTrue(Object.ReferenceEquals(user2, loggedUsers.GetUser(token2)));

            loggedUsers.LogOutUser(token1);
            loggedUsers.LogOutUser(token2);
            // pobranie User1
            Assert.IsFalse(Object.ReferenceEquals(user1, loggedUsers.GetUser(token1)));
            // pobranie User2 - niezalogowanyt
            Assert.IsFalse(Object.ReferenceEquals(user2, loggedUsers.GetUser(token2)));
        }
Exemple #2
0
        public void LogoutUser_UserNotInLoggedUsers()
        {
            var users = new List <User>
            {
                new User
                {
                    Id       = 1,
                    Login    = "******",
                    Password = new Encryption.HasherFactory().GetHasher().Hash("Admin"),
                    Rank     = Rank.Administrator
                }
            };

            var mockSet     = CreateNewMockSetWithData(users);
            var mockContext = new Mock <DatabaseContext>();

            mockContext.Setup(m => m.Set <User>()).Returns(mockSet.Object);

            var oldDb = RepositoryFactory.SetDbContext(mockContext.Object);

            var loginDict = new Dictionary <string, string>
            {
                ["login"]    = "******",
                ["password"] = "******",
            };

            var userController = new UserController();

            var(loggedInAdmin, tokenAdmin) = userController.LogIn(loginDict);

            userController.LogOut(tokenAdmin);

            var user = LoggedUsers.GetInstance().GetUser(tokenAdmin);

            Assert.IsTrue(user == null);

            RepositoryFactory.SetDbContext(oldDb);
        }
Exemple #3
0
        public void UserController_CheckRank()
        {
            var loggedUsers = LoggedUsers.GetInstance();
            var user1       = new UserFactory().CreateAdmin(new User
            {
                Id       = 20,
                Login    = "******",
                Password = new Encryption.HasherFactory().GetHasher().Hash("Pass"),
                Rank     = Rank.Administrator
            });

            var(_, token1) = loggedUsers.LogInUser(user1);
            var user2 = new UserFactory().CreateStudent(new User
            {
                Id       = 21,
                Login    = "******",
                Password = new Encryption.HasherFactory().GetHasher().Hash("Pass1"),
                Rank     = Rank.Student
            }, new StudentData());

            var(_, token2) = loggedUsers.LogInUser(user2);

            var userController = new UserController();

            // pobranie rangi User1
            Assert.IsTrue(userController.CheckRank(token1) == Rank.Administrator);
            // pobranie rangi User2
            Assert.IsTrue(userController.CheckRank(token2) == Rank.Student);

            loggedUsers.LogOutUser(token1);
            loggedUsers.LogOutUser(token2);
            // pobranie rangi wylogowanego użytkownika User1
            Assert.IsTrue(userController.CheckRank(token1) == Rank.None);
            // pobranie rangi wylogowanego użytkownika User2
            Assert.IsTrue(userController.CheckRank(token2) == Rank.None);
        }
Exemple #4
0
        public (bool, string) SignToLesson(Dictionary <string, string> data, string token)
        {
            var userRank = new UserController().CheckRank(token);

            var loggedUser = LoggedUsers
                             .GetInstance()
                             .GetUser(token);

            var repoFactory = new RepositoryFactory();
            var studentRepo = repoFactory.GetRepository <StudentData>();
            var lessonRepo  = repoFactory.GetRepository <Lesson>();

            int         studentId;
            StudentData student;

            switch (userRank)
            {
            case Rank.None:
                return(false, "Należy się zalogować");

            case Rank.Administrator:
                if (!data.ContainsKey("studentId") || !int.TryParse(data["studentId"], out studentId))
                {
                    return(false, "Niepoprawne ID studenta");
                }
                student = studentRepo.GetDetail(s => s.Id == studentId);
                break;

            default:     // student
                student = (loggedUser as Student).StudentData;
                break;
            }

            if (!data.ContainsKey("lessonId") || !int.TryParse(data["lessonId"], out int lessonId))
            {
                return(false, "Niepoprawne ID zajęć");
            }

            var lesson = lessonRepo.GetDetail(l => l.Id == lessonId);

            if (lesson == null)
            {
                return(false, "Nie ma lekcji o podanym ID");
            }

            var course      = lesson.Course;
            var courseGroup = lesson.Course.CourseGroup;

            var(canSign, err) = new CourseGroupController().CheckPermissions(loggedUser, courseGroup.Id);
            if (!canSign)
            {
                return(false, err);
            }

            if (student.Lessons.Any(l => l.Course == course))
            {
                return(false, "Student jest już zapisany na kurs");
            }

            if (lesson.Space <= 0 && userRank != Rank.Administrator)
            {
                return(false, "Brak miejsc");
            }

            student.Lessons.Add(lesson);
            lesson.Space--;

            studentRepo.SaveChanges();
            lessonRepo.SaveChanges();

            return(true, "Zapis na zajęcia udał się");
        }
Exemple #5
0
        public void CourseGroup_EditCoursesGroup()
        {
            var loggedUsers = LoggedUsers.GetInstance();
            var user1       = new UserFactory().CreateAdmin(new User
            {
                Id       = 20,
                Login    = "******",
                Password = new Encryption.HasherFactory().GetHasher().Hash("Pass"),
                Rank     = Rank.Administrator
            });

            var(_, tokenAdmin) = loggedUsers.LogInUser(user1);
            var user2 = new UserFactory().CreateStudent(new User
            {
                Id       = 21,
                Login    = "******",
                Password = new Encryption.HasherFactory().GetHasher().Hash("Pass1"),
                Rank     = Rank.Student
            }, new StudentData());

            var(_, tokenStudent) = loggedUsers.LogInUser(user2);
            var field = new Field {
                Id = 1, Name = "Inf"
            };
            var fields = new List <Field> {
                field
            };
            var courseGroup = new CourseGroup {
                Id = 1, Field = field, FieldId = field.Id
            };
            var courseGroups = new List <CourseGroup> {
                courseGroup
            };

            var mockContext = new Mock <DatabaseContext>();

            var mockSetFields = CreateNewMockSetWithData(fields);

            mockContext.Setup(m => m.Set <Field>()).Returns(mockSetFields.Object);
            var mockSetCG = CreateNewMockSetWithData(courseGroups);

            mockContext.Setup(m => m.Set <CourseGroup>()).Returns(mockSetCG.Object);

            var oldDb = RepositoryFactory.SetDbContext(mockContext.Object);


            var rightData = new Dictionary <string, string>
            {
                ["id"]       = "1",
                ["ects"]     = "29",
                ["semester"] = "6",
                ["fieldId"]  = "1",
                ["code"]     = "INEK000420",
                ["name"]     = "Analiza matematyczna 4",
            };
            var cgController = new CourseGroupController();

            // nieprawidłowy użytkownik
            var(result, _) = cgController.EditCoursesGroup(rightData, tokenStudent);
            Assert.IsFalse(result);
            // niezalogowany użytkownik
            (result, _) = cgController.EditCoursesGroup(rightData, "");
            Assert.IsFalse(result);
            // Nieprawidłowe Id grupy kursów
            var badData = new Dictionary <string, string>(rightData);

            badData["id"] = "2";
            (result, _)   = cgController.EditCoursesGroup(badData, tokenAdmin);
            Assert.IsFalse(result);
            // Nieprawidłowe ects
            badData         = new Dictionary <string, string>(rightData);
            badData["ects"] = "asd";
            (result, _)     = cgController.EditCoursesGroup(badData, tokenAdmin);
            Assert.IsFalse(result);
            badData         = new Dictionary <string, string>(rightData);
            badData["ects"] = "-1";
            (result, _)     = cgController.EditCoursesGroup(badData, tokenAdmin);
            Assert.IsFalse(result);
            // Nieprawidłowy semestr
            badData             = new Dictionary <string, string>(rightData);
            badData["semester"] = "asd";
            (result, _)         = cgController.EditCoursesGroup(badData, tokenAdmin);
            Assert.IsFalse(result);
            badData             = new Dictionary <string, string>(rightData);
            badData["semester"] = "-1";
            (result, _)         = cgController.EditCoursesGroup(badData, tokenAdmin);
            Assert.IsFalse(result);
            // nieprawidłowy kierunek
            badData            = new Dictionary <string, string>(rightData);
            badData["fieldId"] = "asd";
            (result, _)        = cgController.EditCoursesGroup(badData, tokenAdmin);
            Assert.IsFalse(result);
            badData            = new Dictionary <string, string>(rightData);
            badData["fieldId"] = "2";
            (result, _)        = cgController.EditCoursesGroup(badData, tokenAdmin);
            Assert.IsFalse(result);
            // pusty kod grupy kursów
            badData         = new Dictionary <string, string>(rightData);
            badData["code"] = "";
            (result, _)     = cgController.EditCoursesGroup(badData, tokenAdmin);
            Assert.IsFalse(result);
            // pusta nazwa grupy kursów
            badData         = new Dictionary <string, string>(rightData);
            badData["name"] = "";
            (result, _)     = cgController.EditCoursesGroup(badData, tokenAdmin);
            Assert.IsFalse(result);
            // prawidłowe
            (result, _) = cgController.EditCoursesGroup(rightData, tokenAdmin);
            Assert.IsTrue(result && courseGroup.Id == Int32.Parse(rightData["id"]) &&
                          courseGroup.NumberOfEcts == Int32.Parse(rightData["ects"]) &&
                          courseGroup.Semester == Int32.Parse(rightData["semester"]) &&
                          Object.ReferenceEquals(courseGroup.Field, field) &&
                          courseGroup.Code == rightData["code"] &&
                          courseGroup.Name == rightData["name"]);

            loggedUsers.LogOutUser(tokenStudent);
            loggedUsers.LogOutUser(tokenAdmin);
            RepositoryFactory.SetDbContext(oldDb);
        }
Exemple #6
0
 public void LogOut(string token)
 {
     LoggedUsers
     .GetInstance()
     .LogOutUser(token);
 }