Added more tests for the register api.

This commit is contained in:
Paul Dill 2017-02-01 12:07:51 +00:00
parent fc8b74fe13
commit 31fcb1bde8
2 changed files with 296 additions and 46 deletions

View file

@ -25,17 +25,45 @@ for (split ';', $sqlDeployment){
}
#Variables to be used for uniqueness when testing.
my @names = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n');
my @emails = ('a@a.com', 'b@a.com', 'c@a.com', 'd@a.com', 'e@a.com', 'f@a.com', 'g@a.com', 'h@a.com', 'i@a.com', 'j@a.com', 'k@a.com', 'l@a.com', 'm@a.com', 'n@a.com');
my @tokens = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n');
my @names = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
my @emails = ('a@a.com', 'b@a.com', 'c@a.com', 'd@a.com', 'e@a.com', 'f@a.com', 'g@a.com', 'h@a.com', 'i@a.com', 'j@a.com', 'k@a.com', 'l@a.com', 'm@a.com', 'n@a.com', 'o@a.com', 'p@a.com', 'q@a.com', 'r@a.com', 's@a.com', 't@a.com', 'u@a.com', 'v@a.com', 'w@a.com', 'x@a.com', 'y@a.com', 'z@a.com');
my @tokens = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
my $tokenStatement = $dbh->prepare('INSERT INTO Tokens (TokenName) VALUES (?)');
foreach (@tokens){
my $rowsAdded = $tokenStatement->execute($_);
}
#No JSON sent
print "test1\n\n";
$t->post_ok('/register')
->status_is(400)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/no json sent/i);
#Empty JSON
print "test2\n\n";
my $testJson = {};
$t->post_ok('/register' => json => $testJson)
->json_is('/success', Mojo::JSON->false);
#token missing JSON
print "test3\n\n";
my $testJson = {
'usertype' => 'customer',
'username' => shift(@names),
'email' => shift(@emails),
'postcode' => 'LA1 1AA',
'password' => 'Meh',
'age' => '50+'
};
$t->post_ok('/register' => json => $testJson)
->status_is(400)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/no token sent/i);
#Not valid token.
print "test1\n\n";
print "test4\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => ' ',
@ -46,12 +74,29 @@ my $testJson = {
'age' => '50+'
};
$t->post_ok('/register' => json => $testJson)
->status_is(401)->or(sub{ diag $t->tx->res->body})
->status_is(401)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/token/i);
->content_like(qr/token/i)
->content_like(qr/invalid/i);
#username missing JSON
print "test5\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
'email' => shift(@emails),
'postcode' => 'LA1 1AA',
'password' => 'Meh',
'age' => '50+'
};
$t->post_ok('/register' => json => $testJson)
->status_is(400)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/no username sent/i);
#Blank username
print "test2\n\n";
print "test6\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
@ -68,7 +113,7 @@ $t->post_ok('/register' => json => $testJson)
->content_like(qr/username/i);
#Not alpha numeric chars e.g. !
print "test3\n\n";
print "test7\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
@ -87,7 +132,7 @@ my $usernameToReuse = shift(@names);
my $emailToReuse = shift(@emails);
#Valid customer
print "test4\n\n";
print "test8\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
@ -102,7 +147,7 @@ $t->post_ok('/register' => json => $testJson)
->json_is('/success', Mojo::JSON->true);
#Valid customer2
print "test5\n\n";
print "test9\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
@ -117,7 +162,7 @@ $t->post_ok('/register' => json => $testJson)
->json_is('/success', Mojo::JSON->true);
#Valid customer3
print "test6\n\n";
print "test10\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
@ -132,7 +177,7 @@ $t->post_ok('/register' => json => $testJson)
->json_is('/success', Mojo::JSON->true);
#Username exists
print "test7\n\n";
print "test11\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
@ -147,8 +192,23 @@ $t->post_ok('/register' => json => $testJson)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/exists/i);
#email missing JSON
print "test12\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
'username' => shift(@names),
'postcode' => 'LA1 1AA',
'password' => 'Meh',
'age' => '50+'
};
$t->post_ok('/register' => json => $testJson)
->status_is(400)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/no email sent/i);
#invalid email 1
print "test8\n\n";
print "test13\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
@ -165,7 +225,7 @@ $t->post_ok('/register' => json => $testJson)
->content_like(qr/invalid/i);
#invalid email 2
print "test9\n\n";
print "test14\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
@ -182,7 +242,7 @@ $t->post_ok('/register' => json => $testJson)
->content_like(qr/invalid/i);
#Email exists
print "test10\n\n";
print "test15\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
@ -198,41 +258,57 @@ $t->post_ok('/register' => json => $testJson)
->content_like(qr/email/i)
->content_like(qr/exists/i);
#Age is invalid
print "test11\n\n";
#postcode missing JSON
print "test16\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
'username' => shift(@names),
'email' => shift(@emails),
'postcode' => 'LA1 1AA',
'password' => 'Meh',
'age' => 'invalid'
'usertype' => 'customer',
'token' => shift(@tokens),
'username' => shift(@names),
'email' => shift(@emails),
'password' => 'Meh',
'age' => '50+'
};
$t->post_ok('/register' => json => $testJson)
->status_is(400)
->status_is(400)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/age/i)
->content_like(qr/invalid/i);
->content_like(qr/no postcode sent/i);
#Organisation valid
print "test12\n\n";
#TODO validate postcode
#password missing JSON
print "test17\n\n";
my $testJson = {
'usertype' => 'organisation',
'token' => shift(@tokens),
'username' => shift(@names),
'email' => shift(@emails),
'postcode' => 'LA1 1AA',
'password' => 'Meh',
'fulladdress' => 'mary lane testing....'
'usertype' => 'customer',
'token' => shift(@tokens),
'username' => shift(@names),
'email' => shift(@emails),
'postcode' => 'LA1 1AA',
'age' => '50+'
};
$t->post_ok('/register' => json => $testJson)
->status_is(200)
->json_is('/success', Mojo::JSON->true);
->status_is(400)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/no password sent/i);
#TODO enforce password complexity requirements.
#usertype missing JSON
print "test18\n\n";
my $testJson = {
'token' => shift(@tokens),
'username' => shift(@names),
'email' => shift(@emails),
'postcode' => 'LA1 1AA',
'password' => 'Meh',
'age' => '50+'
};
$t->post_ok('/register' => json => $testJson)
->status_is(400)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/no usertype sent/i);
#Invalid user type
print "test13\n\n";
print "test19\n\n";
my $testJson = {
'usertype' => 'organisation1',
'token' => shift(@tokens),
@ -248,4 +324,87 @@ $t->post_ok('/register' => json => $testJson)
->content_like(qr/usertype/i)
->content_like(qr/invalid/i);
#age missing JSON
print "test20\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
'username' => shift(@names),
'email' => shift(@emails),
'postcode' => 'LA1 1AA',
'password' => 'Meh',
};
$t->post_ok('/register' => json => $testJson)
->status_is(400)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/no age sent/i);
#Age is invalid
print "test21\n\n";
my $testJson = {
'usertype' => 'customer',
'token' => shift(@tokens),
'username' => shift(@names),
'email' => shift(@emails),
'postcode' => 'LA1 1AA',
'password' => 'Meh',
'age' => 'invalid'
};
$t->post_ok('/register' => json => $testJson)
->status_is(400)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/age/i)
->content_like(qr/invalid/i);
#full address missing JSON
print "test22\n\n";
my $testJson = {
'usertype' => 'organisation',
'token' => shift(@tokens),
'username' => shift(@names),
'email' => shift(@emails),
'postcode' => 'LA1 1AA',
'password' => 'Meh',
};
$t->post_ok('/register' => json => $testJson)
->status_is(400)
->json_is('/success', Mojo::JSON->false)
->content_like(qr/no fulladdress sent/i);
#TODO Validation of full address
#Organisation valid
print "test23\n\n";
my $testJson = {
'usertype' => 'organisation',
'token' => shift(@tokens),
'username' => shift(@names),
'email' => shift(@emails),
'postcode' => 'LA1 1AA',
'password' => 'Meh',
'fulladdress' => 'mary lane testing....'
};
$t->post_ok('/register' => json => $testJson)
->status_is(200)
->json_is('/success', Mojo::JSON->true);
#No JSON sent
#print "test14\n\n";
#my $testJson = {
# 'usertype' => 'customer',
# 'token' => shift(@tokens),
# 'username' => shift(@names),
# 'email' => shift(@emails),
# 'postcode' => 'LA1 1AA',
# 'password' => 'Meh',
# 'age' => '50+'
#};
#$t->post_ok('/register' => json => $testJson)
# ->status_is(401)->or(sub{ diag $t->tx->res->body})
# ->json_is('/success', Mojo::JSON->false)
# ->content_like(qr/token/i);
done_testing();