OSDN Git Service

t: add change email and password test to aapi/user.t
authorhylom <hylom@users.sourceforge.jp>
Mon, 5 Nov 2018 11:27:26 +0000 (20:27 +0900)
committerhylom <hylom@users.sourceforge.jp>
Mon, 5 Nov 2018 11:27:26 +0000 (20:27 +0900)
src/newslash_web/t/api/user.t

index 7aa61ff..d97946b 100644 (file)
@@ -2,25 +2,23 @@
 # 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 {
@@ -40,9 +38,7 @@ 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)
@@ -55,13 +51,14 @@ subtest 'get users info' => sub {
       ->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')
@@ -69,7 +66,7 @@ subtest 'validate new users' => sub {
       ->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')
@@ -77,7 +74,7 @@ subtest 'validate new users' => sub {
       ->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')
@@ -93,15 +90,49 @@ subtest 'validate new users' => sub {
       ->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();