コード例 #1
0
        public void Post_LoginUser_InvalidAuthCode_AuthCodeTooShort()
        {
            FakeRepository<User> userFakeRepository = new FakeRepository<User>();
            UsersController usersController = new UsersController(userFakeRepository);
            SetupController(usersController);

            UserModel model = new UserModel()
            {
                AuthCode = "0123456789",
                Username = "******",
                Nickname = "TestNickname"
            };

            usersController.RegisterUser(model);
        }
コード例 #2
0
        public HttpResponseMessage LoginUser(UserModel model)
        {
            var responseMessage = this.PerformOperationAndHandleExceptions(() =>
                {
                    this.ValidateUsername(model.Username);
                    this.ValidateAuthCode(model.AuthCode);

                    string modelUsernameToLower = model.Username.ToLower();

                    User user = this.userRepository.GetAll().Where(
                        usr => usr.Username.ToLower() == modelUsernameToLower &&
                               usr.AuthCode == model.AuthCode).FirstOrDefault();

                    if (user == null)
                    {
                        throw new InvalidOperationException("Invalid username or password.");
                    }

                    if (user.SessionKey == null)
                    {
                        user.SessionKey = this.GenerateSessionKey(user.Id);
                        this.userRepository.Update(user.Id, user);
                    }

                    var userLoggedModel = new UserLoggedModel
                    {
                        Nickname = user.Nickname,
                        SessionKey = user.SessionKey
                    };

                    var response = this.Request.CreateResponse(HttpStatusCode.OK, userLoggedModel);
                    return response;
                });

            return responseMessage;
        }
コード例 #3
0
        public void Post_LoginUser_InvalidLogin_NoUserWithSuchAuthCode()
        {
            FakeRepository<User> userFakeRepository = new FakeRepository<User>();
            UsersController usersController = new UsersController(userFakeRepository);
            SetupController(usersController);

            User user = new User()
            {
                AuthCode = "9876543210987654321098765432109876543210",
                Username = "******",
                Nickname = "TestNickname",
            };

            userFakeRepository.entities.Add(user);

            UserModel model = new UserModel()
            {
                AuthCode = "0123456789012345678901234567890123456789",
                Username = "******",
                Nickname = "TestNickname"
            };

            var response = usersController.LoginUser(model);
        }
コード例 #4
0
        public HttpResponseMessage RegisterUser(UserModel model)
        {
            var responseMessage = this.PerformOperationAndHandleExceptions(() =>
                {
                    ValidateUsername(model.Username);
                    ValidateNickname(model.Nickname);
                    ValidateAuthCode(model.AuthCode);

                    string modelUsernameToLower = model.Username.ToLower();
                    string modelNicknameToLower = model.Nickname.ToLower();

                    User user = this.userRepository.GetAll().Where(
                        usr => usr.Username.ToLower() == modelUsernameToLower &&
                               usr.AuthCode == model.AuthCode).FirstOrDefault();

                    if (user != null)
                    {
                        throw new InvalidOperationException("The username already exists.");
                    }

                    user = new User
                    {
                        Username = model.Username,
                        Nickname = model.Nickname,
                        AuthCode = model.AuthCode
                    };

                    this.userRepository.Add(user);
                    user.SessionKey = this.GenerateSessionKey(user.Id);
                    this.userRepository.Update(user.Id, user);

                    var userLoggedModel = new UserLoggedModel()
                    {
                        Nickname = user.Nickname,
                        SessionKey = user.SessionKey
                    };

                    var response = this.Request.CreateResponse(HttpStatusCode.Created, userLoggedModel);
                    return response;
                });

            return responseMessage;
        }
コード例 #5
0
        public void Post_LoginUser_InvalidUsername_ContainsUnallowedSymbols()
        {
            FakeRepository<User> userFakeRepository = new FakeRepository<User>();
            UsersController usersController = new UsersController(userFakeRepository);
            SetupController(usersController);

            UserModel model = new UserModel()
            {
                AuthCode = "0123456789012345678901234567890123456789",
                Username = "******",
                Nickname = "TestNickname"
            };

            usersController.RegisterUser(model);
        }
コード例 #6
0
        public void Post_RegisterUser_ValidUsernameAndPassword_ShouldRegisterSuccessfully()
        {
            FakeRepository<User> userFakeRepository = new FakeRepository<User>();
            UsersController usersController = new UsersController(userFakeRepository);
            SetupController(usersController);

            UserModel model = new UserModel()
            {
                AuthCode = "0123456789012345678901234567890123456789",
                Username = "******",
                Nickname = "TestNickname"
            };

            var response = usersController.RegisterUser(model);

            int expectedCount = 1;
            Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
            Assert.AreEqual(expectedCount, userFakeRepository.entities.Count);
        }
コード例 #7
0
        public void Post_RegisterUser_InvalidUsername_UsernameIsTooLarge()
        {
            FakeRepository<User> userFakeRepository = new FakeRepository<User>();
            UsersController usersController = new UsersController(userFakeRepository);
            SetupController(usersController);

            UserModel model = new UserModel()
            {
                AuthCode = "0123456789012345678901234567890123456789",
                Username = "******",
                Nickname = "TestNickname"
            };

            usersController.RegisterUser(model);
        }
コード例 #8
0
        public void Post_RegisterUser_InvalidUsername_UsernameAlreadyExists()
        {
            FakeRepository<User> userFakeRepository = new FakeRepository<User>();
            UsersController usersController = new UsersController(userFakeRepository);
            SetupController(usersController);

            User user = new User()
            {
                AuthCode = "0123456789012345678901234567890123456789",
                Username = "******",
                Nickname = "TestNickname",
                SessionKey = "sessionKey0123456789012345678901234567890123456789"
            };

            userFakeRepository.entities.Add(user);

            UserModel model = new UserModel()
            {
                AuthCode = "0123456789012345678901234567890123456789",
                Username = "******",
                Nickname = "TestNickname"
            };

            usersController.RegisterUser(model);
        }
コード例 #9
0
        public void Post_LoginUser_ValidLogin()
        {
            FakeRepository<User> userFakeRepository = new FakeRepository<User>();
            UsersController usersController = new UsersController(userFakeRepository);
            SetupController(usersController);

            User user = new User()
            {
                AuthCode = "0123456789012345678901234567890123456789",
                Username = "******",
                Nickname = "TestNickname",
                SessionKey = "0SuGqVGqRwitYtijDvHlVfHGotklitbwHdYFkgwIRcIQjRASPQ"
            };

            userFakeRepository.entities.Add(user);

            UserModel model = new UserModel()
            {
                AuthCode = "0123456789012345678901234567890123456789",
                Username = "******",
                Nickname = "TestNickname"
            };

            var response = usersController.LoginUser(model);

            int expectedCount = 1;
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.AreEqual(expectedCount, userFakeRepository.entities.Count);
        }