-
Notifications
You must be signed in to change notification settings - Fork 132
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Onur Zungur
committed
Jul 3, 2024
1 parent
0dfaa97
commit 85c00fc
Showing
5 changed files
with
216 additions
and
49 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,6 +15,7 @@ | |
"awscli", | ||
"zxcvbn", | ||
"email_validator", | ||
"argon2-cffi", | ||
"vtjson", | ||
] | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,7 +15,9 @@ def setUp(self): | |
|
||
def tearDown(self): | ||
self.rundb.userdb.users.delete_many({"username": "JoeUser"}) | ||
self.rundb.userdb.users.delete_many({"username": "JoeUser2"}) | ||
self.rundb.userdb.user_cache.delete_many({"username": "JoeUser"}) | ||
self.rundb.userdb.user_cache.delete_many({"username": "JoeUser2"}) | ||
self.rundb.stop() | ||
testing.tearDown() | ||
|
||
|
@@ -35,6 +37,21 @@ def test_create_user(self): | |
response = signup(request) | ||
self.assertTrue("The resource was found at", response) | ||
|
||
request2 = testing.DummyRequest( | ||
userdb=self.rundb.userdb, | ||
method="POST", | ||
remote_addr="127.0.0.1", | ||
params={ | ||
"username": "JoeUser2", | ||
"password": "secret2", | ||
"password2": "secret2", | ||
"email": "[email protected]", | ||
"tests_repo": "https://github.com/official-stockfish/Stockfish2", | ||
}, | ||
) | ||
response2 = signup(request2) | ||
self.assertTrue("The resource was found at", response2) | ||
|
||
|
||
class Create50LoginTest(unittest.TestCase): | ||
def setUp(self): | ||
|
@@ -45,16 +62,25 @@ def setUp(self): | |
"[email protected]", | ||
"https://github.com/official-stockfish/Stockfish", | ||
) | ||
self.rundb.userdb.create_user( | ||
"JoeUser2", | ||
"$argon2id$v=19$m=12288,t=3,p=1$9tW9uRY6ijZ0PEiOcldWoQ$f5YCuVMP77x8Wlrcue0Jn7JGjCmgKy76WQynuIfitdA", | ||
"[email protected]", | ||
"https://github.com/official-stockfish/Stockfish2", | ||
) | ||
self.config = testing.setUp() | ||
self.config.add_route("login", "/login") | ||
|
||
def tearDown(self): | ||
self.rundb.userdb.users.delete_many({"username": "JoeUser"}) | ||
self.rundb.userdb.users.delete_many({"username": "JoeUser2"}) | ||
self.rundb.userdb.user_cache.delete_many({"username": "JoeUser"}) | ||
self.rundb.userdb.user_cache.delete_many({"username": "JoeUser2"}) | ||
self.rundb.stop() | ||
testing.tearDown() | ||
|
||
def test_login(self): | ||
# Pending user, wrong password | ||
request = testing.DummyRequest( | ||
userdb=self.rundb.userdb, | ||
method="POST", | ||
|
@@ -65,21 +91,109 @@ def test_login(self): | |
"Invalid password for user: JoeUser" in request.session.pop_flash("error") | ||
) | ||
|
||
# Correct password, but still pending from logging in | ||
# Pending user, correct password | ||
request.params["password"] = "secret" | ||
login(request) | ||
self.assertTrue( | ||
"Account pending for user: JoeUser" in request.session.pop_flash("error")[0] | ||
) | ||
|
||
# Unblock, then user can log in successfully | ||
# Approved user, wrong password | ||
user = self.rundb.userdb.get_user("JoeUser") | ||
user["pending"] = False | ||
self.rundb.userdb.save_user(user) | ||
request.params["password"] = "badsecret" | ||
response = login(request) | ||
self.assertTrue( | ||
"Invalid password for user: JoeUser" in request.session.pop_flash("error") | ||
) | ||
|
||
# Approved user, correct password | ||
request.params["password"] = "secret" | ||
response = login(request) | ||
self.assertEqual(response.code, 302) | ||
self.assertTrue("The resource was found at" in str(response)) | ||
|
||
# User is blocked, correct password | ||
user["blocked"] = True | ||
self.rundb.userdb.save_user(user) | ||
response = login(request) | ||
self.assertTrue( | ||
"Account blocked for user: JoeUser" in request.session.pop_flash("error")[0] | ||
) | ||
|
||
# User is unblocked, correct password | ||
user["blocked"] = False | ||
self.rundb.userdb.save_user(user) | ||
response = login(request) | ||
self.assertEqual(response.code, 302) | ||
self.assertTrue("The resource was found at" in str(response)) | ||
|
||
# Invalid username, correct password | ||
request.params["username"] = "UserJoe" | ||
response = login(request) | ||
self.assertTrue( | ||
"Invalid username: UserJoe" in request.session.pop_flash("error")[0] | ||
) | ||
|
||
# Pending user2, wrong password | ||
request2 = testing.DummyRequest( | ||
userdb=self.rundb.userdb, | ||
method="POST", | ||
params={"username": "JoeUser2", "password": "badsecret2"}, | ||
) | ||
response2 = login(request2) | ||
self.assertTrue( | ||
"Invalid password for user: JoeUser2" in request2.session.pop_flash("error") | ||
) | ||
|
||
# Pending user2, correct password | ||
request2.params["password"] = "secret2" | ||
login(request2) | ||
self.assertTrue( | ||
"Account pending for user: JoeUser2" | ||
in request2.session.pop_flash("error")[0] | ||
) | ||
|
||
# Approved user2, wrong password | ||
user2 = self.rundb.userdb.get_user("JoeUser2") | ||
user2["pending"] = False | ||
self.rundb.userdb.save_user(user2) | ||
request2.params["password"] = "badsecret2" | ||
response2 = login(request2) | ||
self.assertTrue( | ||
"Invalid password for user: JoeUser2" in request2.session.pop_flash("error") | ||
) | ||
|
||
# Approved user2, correct password | ||
request2.params["password"] = "secret2" | ||
response2 = login(request2) | ||
self.assertEqual(response2.code, 302) | ||
self.assertTrue("The resource was found at" in str(response2)) | ||
|
||
# User2 is blocked, correct password | ||
user2["blocked"] = True | ||
self.rundb.userdb.save_user(user2) | ||
response2 = login(request2) | ||
self.assertTrue( | ||
"Account blocked for user: JoeUser2" | ||
in request2.session.pop_flash("error")[0] | ||
) | ||
|
||
# User2 is unblocked, correct password | ||
user2["blocked"] = False | ||
self.rundb.userdb.save_user(user2) | ||
response2 = login(request2) | ||
self.assertEqual(response2.code, 302) | ||
self.assertTrue("The resource was found at" in str(response2)) | ||
|
||
# Invalid username, correct password | ||
request2.params["username"] = "UserJoe2" | ||
response2 = login(request2) | ||
self.assertTrue( | ||
"Invalid username: UserJoe2" in request2.session.pop_flash("error")[0] | ||
) | ||
|
||
|
||
class Create90APITest(unittest.TestCase): | ||
def setUp(self): | ||
|