# destructive database-related tests
use Mojo::Base -strict;
use Mojo::Date;
-
use Test::More;
use Test::Mojo;
use Mojo::Util qw(dumper);
-
-use Newslash::Util::Test qw(create_user delete_user);
-
use POSIX qw(strftime);
-my $t = Test::Mojo->new('Newslash::Web');
+use Newslash::Util::TestMan;
+my $t = Test::Mojo->new('Newslash::Web');
+my $test_man = Newslash::Util::TestMan->new($t);
+my $test_nickname = "usertest";
+my $default_passwd = "foobar_usertest";
my $user;
# prepare for test
if ($t->app->mode eq 'test') {
# at first, create test users.
- $user = create_user($t->app, "test01", "foobar");
- ok($user, "create test user");
-
+ $user = $test_man->create_user($test_nickname, $default_passwd);
}
subtest 'user query' => sub {
};
subtest 'get users info' => sub {
- # login
- $t->post_ok('/login' => {Accept => '*/*'} => form => {nickname => 'test01', passwd => 'foobar'})
- ->status_is(302);
+ $test_man->login($user);
$t->get_ok('/api/v1/user?type=config')
->status_is(200)
->json_has('/config')
->or(sub {diag "message: " . dumper($t->tx->res->json);});
- # logout
- $t->get_ok('/logout')->status_is(302);
+ $test_man->logout;
};
subtest 'validate new users' => sub {
+ my $new_email = 'hjkhkjadsf@example.com';
+
# nickname exists
- $t->post_ok('/api/v1/newuser/validate' => {Accept => '*/*'} => json => {nickname => 'test01', email => 'hoge@example.com'})
+ $t->post_ok('/api/v1/newuser/validate' => {Accept => '*/*'} => json => {nickname => $test_nickname, email => $new_email})
->status_is(400)
->content_type_like(qr|application/json|)
->json_has('/error')
->or(sub {diag "message: " . dumper($t->tx->res->json);});
# invalid nickname
- $t->post_ok('/api/v1/newuser/validate' => {Accept => '*/*'} => json => {nickname => 'a&~foo', email => 'hoge@example.com'})
+ $t->post_ok('/api/v1/newuser/validate' => {Accept => '*/*'} => json => {nickname => 'a&~foo', email => $new_email})
->status_is(400)
->content_type_like(qr|application/json|)
->json_has('/error')
->or(sub {diag "message: " . dumper($t->tx->res->json);});
# exists email
- $t->post_ok('/api/v1/newuser/validate' => {Accept => '*/*'} => json => {nickname => 'hoge', email => 'test01@example.com'})
+ $t->post_ok('/api/v1/newuser/validate' => {Accept => '*/*'} => json => {nickname => 'hoge', email => $user->{realemail}})
->status_is(400)
->content_type_like(qr|application/json|)
->json_has('/error')
->or(sub {diag "message: " . dumper($t->tx->res->json);});
# ok
- $t->post_ok('/api/v1/newuser/validate' => {Accept => '*/*'} => json => {nickname => 'hoge', email => 'hoge@example.com'})
+ $t->post_ok('/api/v1/newuser/validate' => {Accept => '*/*'} => json => {nickname => 'hoge', email => $new_email})
+ ->status_is(200)
+ ->content_type_like(qr|application/json|)
+ ->json_hasnt('/error');
+};
+
+subtest 'update email' => sub {
+ $test_man->login($user);
+
+ my $new_address = 'foobarhogehoge@example.com';
+
+ $t->post_ok('/api/v1/user' => {Accept => '*/*'} => json => { type => "email",
+ address => $new_address })
->status_is(200)
->content_type_like(qr|application/json|)
->json_hasnt('/error')
+ ->json_is('/uid', $user->{uid})
+ ->json_is('/email', $new_address);
+ diag dumper $t->tx->res->json if !$t->success;
+
+ # チェックコードを書く
+
+ $test_man->logout;
+};
+
+subtest 'update password' => sub {
+ $test_man->login($user);
+
+ $t->post_ok('/api/v1/user' => {Accept => '*/*'} => json => { type => "password",
+ current_password => $default_passwd,
+ new_password => "foobarhogehoge" })
+ ->status_is(200)
+ ->content_type_like(qr|application/json|)
+ ->json_hasnt('/error')
+ ->json_is('/uid', $user->{uid});
+
+
+ # チェックコードを書く
+
+
+ $test_man->logout;
};
-#clean up
-if ($user) {
- delete_user($t->app, "test01");
-}
+$test_man->cleanup;
done_testing();