[Cpan-forum-commit] rev 170 - in trunk: . bin lib/CPAN t/db t/lib/CPAN/Forum t/mech

svn at pti.co.il svn at pti.co.il
Fri Aug 25 18:15:39 IDT 2006


Author: gabor
Date: 2006-08-25 18:15:39 +0300 (Fri, 25 Aug 2006)
New Revision: 170

Modified:
   trunk/
   trunk/bin/upgrade_to_0_12.pl
   trunk/lib/CPAN/Forum.pm
   trunk/t/db/users.t
   trunk/t/lib/CPAN/Forum/Test.pm
   trunk/t/mech/100-auth.t
Log:
keep the submit request also in case the user has to 
login before she can post something



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:10997
   + 8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:10998

Modified: trunk/bin/upgrade_to_0_12.pl
===================================================================
--- trunk/bin/upgrade_to_0_12.pl	2006-08-25 15:15:31 UTC (rev 169)
+++ trunk/bin/upgrade_to_0_12.pl	2006-08-25 15:15:39 UTC (rev 170)
@@ -46,4 +46,13 @@
 ALTER TABLE groups ADD rating VARCHAR(10);
 ALTER TABLE groups ADD review_count INTEGER;
 
+CREATE TABLE subscriptions_all (
+			id               INTEGER PRIMARY KEY,
+			uid              INTEGER NOT NULL,
+			allposts         BOOLEAN,
+			starters         BOOLEAN,
+			followups        BOOLEAN,
+			announcements    BOOLEAN
+);
 
+

Modified: trunk/lib/CPAN/Forum.pm
===================================================================
--- trunk/lib/CPAN/Forum.pm	2006-08-25 15:15:31 UTC (rev 169)
+++ trunk/lib/CPAN/Forum.pm	2006-08-25 15:15:39 UTC (rev 170)
@@ -631,6 +631,10 @@
     if (not  $self->session->param('loggedin') ) {
         $self->log->debug("Showing login");
         $self->session->param(request => $rm);
+        if ($rm eq 'new_post') {
+            my $group = ${$self->param("path_parameters")}[0];
+            $self->session->param(request_group => $group);
+        }
         $self->prerun_mode('login');
         return;
     }
@@ -880,19 +884,24 @@
     }
 
     my $request = $session->param("request") || "home";
-    $session->param("request" => "");
-    $session->flush();
-    $self->log->debug("Session flushed after login " . $session->param('loggedin'));
     $self->log->debug("Request redirection: '$request'");
     no strict 'refs';
     my $response;
     eval {
+        if ($request eq 'new_post') {
+            my $request_group = $session->param("request_group") || '';
+            $self->param("path_parameters" => [$request_group]);
+        }
         $response = &$request($self);
     };
     if ($@) {
         $self->log->error($@);
         die $@; # TODO: send error page?
     }
+    $session->param("request" => "");
+    $session->param("request_group" => "");
+    $session->flush();
+    $self->log->debug("Session flushed after login " . $session->param('loggedin'));
     return $response;
 }
 
@@ -1163,6 +1172,11 @@
 
     my $rm = $self->get_current_runmode();
     $self->log->debug("posts rm=$rm");
+    my $request = $self->session->param('request');
+    if ($request) {
+        $rm = $request;
+        $self->log->debug("posts request reset rm=$rm");
+    }
 
     my $new_group = "";
     my $new_group_id = "";
@@ -1546,6 +1560,7 @@
     my $q = $self->query;
 
     my $group = ${$self->param("path_parameters")}[0];
+    $self->log->debug("show dist: '$group'");
 #   $group =~ s/-/::/g;
 #   (my $dashgroup = $group) =~ s/::/-/g;
 

Modified: trunk/t/db/users.t
===================================================================
--- trunk/t/db/users.t	2006-08-25 15:15:31 UTC (rev 169)
+++ trunk/t/db/users.t	2006-08-25 15:15:39 UTC (rev 170)
@@ -34,10 +34,14 @@
 		email    => $users[0]{email},
     });
     isa_ok($user, 'CPAN::Forum::Users');
+    is($user->username, $users[0]{username});
+    is($user->email, $users[0]{email});
+    is(length($user->password), 7);
 
     my @db_users = CPAN::Forum::Users->retrieve_all;
     is(@db_users, 2);
 	is(CPAN::Forum::Users->count_all(), 2);
-    BEGIN { $tests += 3; }
+    BEGIN { $tests += 6; }
 }
 
+

Modified: trunk/t/lib/CPAN/Forum/Test.pm
===================================================================
--- trunk/t/lib/CPAN/Forum/Test.pm	2006-08-25 15:15:31 UTC (rev 169)
+++ trunk/t/lib/CPAN/Forum/Test.pm	2006-08-25 15:15:39 UTC (rev 170)
@@ -56,7 +56,11 @@
 
 sub register_user {
     my ($id) = @_;
-   
+
+    init_db();
+    require CPAN::Forum::Users;
+  	my $user = CPAN::Forum::Users->create($users[0]);
+    return $user;
 }
 
 

Modified: trunk/t/mech/100-auth.t
===================================================================
--- trunk/t/mech/100-auth.t	2006-08-25 15:15:31 UTC (rev 169)
+++ trunk/t/mech/100-auth.t	2006-08-25 15:15:39 UTC (rev 170)
@@ -18,8 +18,10 @@
 }
 
 
-my $w   = CPAN::Forum::Test::get_mech();
-my $url = CPAN::Forum::Test::get_url();
+my $w_admin = CPAN::Forum::Test::get_mech();
+my $w_user  = CPAN::Forum::Test::get_mech();
+my $w_guest = CPAN::Forum::Test::get_mech();
+my $url     = CPAN::Forum::Test::get_url();
 
 my %config = read_config();
 sub read_config {
@@ -34,19 +36,70 @@
 }
 
 {
-    $w->get_ok($url);
-    $w->content_like(qr{CPAN Forum});
+    $w_admin->get_ok($url);
+    $w_admin->content_like(qr{CPAN Forum});
 
-    $w->follow_link_ok({ text => 'login' });
-    $w->content_like(qr{Login});
-    $w->content_like(qr{Nickname});
-    $w->submit_form(
+    $w_admin->follow_link_ok({ text => 'login' });
+    $w_admin->content_like(qr{Login});
+    $w_admin->content_like(qr{Nickname});
+    $w_admin->submit_form(
         fields => {
             nickname => $config{username},
             password => $config{password},
         },
     );
-    $w->content_like(qr{You are logged in as.*$config{username}});
+    $w_admin->content_like(qr{You are logged in as.*$config{username}});
     BEGIN { $tests += 6; }
 }
 
+{
+    my $user = CPAN::Forum::Test::register_user(0);
+    $w_user->get_ok($url);
+    $w_user->content_like(qr{CPAN Forum});
+    $w_user->follow_link_ok({ text => 'login' });
+    $w_user->content_like(qr{Login});
+
+    $w_user->submit_form(
+        fields => {
+            nickname => $user->username,
+            password => $user->password,
+        },
+    );
+    $w_user->content_like(qr{You are logged in as.*$users[0]{username}});
+
+    BEGIN { $tests += 5; }
+
+}
+
+{
+    my ($user) 
+        = CPAN::Forum::Users->search({ username => $users[0]{username} });
+    $w_guest->get_ok($url);
+    $w_guest->content_like(qr{CPAN Forum});
+    $w_guest->get_ok("$url/dist/Acme-Bleach");
+    $w_guest->follow_link_ok({ text => 'new post' });
+    # check if this is the login form
+    $w_guest->submit_form(
+        fields => {
+            nickname => $user->username,
+            password => $user->password,
+        },
+    );
+    
+    $w_guest->content_like(qr{Distribution: Acme-Bleach});
+    $w_guest->follow_link_ok({ text => 'logout' });
+
+    BEGIN { $tests += 6; }
+}
+
+{
+    $w_user->get_ok($url);
+    $w_user->content_like(qr{CPAN Forum});
+    $w_user->get_ok("$url/dist/Acme-Bleach");
+    $w_user->content_like(qr{Acme-Bleach});
+    $w_user->follow_link_ok({ text => 'new post' });
+    $w_user->content_like(qr{Distribution: Acme-Bleach});
+
+    BEGIN { $tests += 6; }
+}
+



More information about the Cpan-forum-commit mailing list