Skip to content

Commit

Permalink
Case insensitive tests (#683)
Browse files Browse the repository at this point in the history
* Make user email and username lowercase whenever they are sent to a controller

* Change ToLower to ToLowerInvariant

* Move toLowerInvariant to database queries only

* Play with tests

* More test playing

* Remove commented test

Co-authored-by: Jason Naylor <jasonleenaylor@users.noreply.github.com>
  • Loading branch information
JosephGaynier and jasonleenaylor authored Sep 3, 2020
1 parent cb9da28 commit bb22b29
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 4 deletions.
61 changes: 60 additions & 1 deletion Backend.Tests/UserControllerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,21 @@ public void Setup()

private static User RandomUser()
{
var user = new User { Username = Util.RandString(), Password = Util.RandString() };
var user = new User { Username = Util.RandString(10), Password = Util.RandString(10) };
return user;
}

[Test]
public void TestRandString()
{
var randomString = Util.RandString(10);
Assert.IsTrue(char.IsUpper(randomString[0]));
Assert.IsTrue(char.IsLower(randomString[1]));
Assert.IsTrue(char.IsLower(randomString[2]));
Assert.IsTrue(char.IsLower(randomString[3]));
Assert.IsTrue(char.IsUpper(randomString[4]));
}

[Test]
public void TestGetAllUsers()
{
Expand Down Expand Up @@ -112,5 +123,53 @@ public void TestDeleteAllUsers()
_ = _controller.Delete().Result;
Assert.That(_userService.GetAllUsers().Result, Has.Count.EqualTo(0));
}

[Test]
public void TestCheckUsername()
{
var user1 = RandomUser();
var user2 = RandomUser();
var username1 = user1.Username;
var username2 = user2.Username;

_userService.Create(user1);
_userService.Create(user2);

var result1 = (_controller.CheckUsername(username1.ToLowerInvariant())).Result as StatusCodeResult;
Assert.AreEqual(result1.StatusCode, 400);

var result2 = (_controller.CheckUsername(username2.ToUpperInvariant())).Result as StatusCodeResult;
Assert.AreEqual(result2.StatusCode, 400);

var result3 = (_controller.CheckUsername(username1)).Result as StatusCodeResult;
Assert.AreEqual(result3.StatusCode, 400);

var result4 = (_controller.CheckUsername("NewUsername")).Result as StatusCodeResult;
Assert.AreEqual(result4.StatusCode, 200);
}

[Test]
public void TestCheckEmail()
{
var user1 = RandomUser();
var user2 = RandomUser();
var email1 = user1.Email;
var email2 = user2.Email;

_userService.Create(user1);
_userService.Create(user2);

var result1 = (_controller.CheckEmail(email1.ToLowerInvariant())).Result as StatusCodeResult;
Assert.AreEqual(result1.StatusCode, 400);

var result2 = (_controller.CheckEmail(email2.ToUpperInvariant())).Result as StatusCodeResult;
Assert.AreEqual(result2.StatusCode, 400);

var result3 = (_controller.CheckEmail(email1)).Result as StatusCodeResult;
Assert.AreEqual(result3.StatusCode, 400);

var result4 = (_controller.CheckEmail("NewEmail")).Result as StatusCodeResult;
Assert.AreEqual(result4.StatusCode, 200);
}
}
}
2 changes: 1 addition & 1 deletion Backend.Tests/UserServiceMock.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public Task<User> Authenticate(string username, string password)
{
try
{
var foundUser = _users.Single(u => u.Username == username && u.Password == password);
var foundUser = _users.Single(u => u.Username.ToLowerInvariant() == username.ToLowerInvariant() && u.Password == password);
if (foundUser == null)
{
return null;
Expand Down
5 changes: 4 additions & 1 deletion Backend.Tests/Util.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ public static string RandString(int length)
var sb = new StringBuilder();
for (var i = 0; i < length; i++)
{
sb.Append((char)rnd.Next('a', 'z'));
if (i % 4 == 0)
sb.Append((char)rnd.Next('A', 'Z'));
else
sb.Append((char)rnd.Next('a', 'z'));
}
return sb.ToString();
}
Expand Down
3 changes: 2 additions & 1 deletion Backend/Services/PasswordResetService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ async Task<bool> IPasswordResetService.ResetPassword(string token, string passwo
var request = await _passwordResets.FindByToken(token);
if (request != null && DateTime.Now < request.ExpireTime)
{
var user = (await _userService.GetAllUsers()).Single(u => u.Email == request.Email);
var user = (await _userService.GetAllUsers()).Single(u =>
u.Email.ToLowerInvariant() == request.Email.ToLowerInvariant());
await _userService.ChangePassword(user.Id, password);
await ExpirePasswordReset(request.Email);
return true;
Expand Down

0 comments on commit bb22b29

Please sign in to comment.