allow specs to work even when it's between 23:00 and 00:00
[coquelicot.git] / spec / coquelicot_spec.rb
index 839f9de..00e1a7c 100644 (file)
@@ -23,7 +23,7 @@ describe 'Coquelicot' do
 
   def upload(opts={})
     opts = { :file => Rack::Test::UploadedFile.new(__FILE__, 'text/x-script.ruby'),
-             :upload_token => JSON.dump({ 'upload_password' => UPLOAD_PASSWORD})
+             :upload_password => UPLOAD_PASSWORD
            }.merge(opts)
     post '/upload', opts
     return nil unless last_response.redirect?
@@ -131,27 +131,42 @@ describe 'Coquelicot' do
     end
 
     it "should prevent upload without a password" do
-      url = upload :upload_token => JSON.dump({'upload_password' => ''})
+      url = upload :upload_password => ''
       url.should be_nil
       last_response.status.should eql(403)
     end
 
     it "should prevent upload with a wrong password" do
-      url = upload :upload_token => JSON.dump({'upload_password' => 'bad'})
+      url = upload :upload_password => 'bad'
       url.should be_nil
       last_response.status.should eql(403)
     end
 
-    it "should allow AJAX upload password verification" do
-      request "/authenticate", :method => "POST", :xhr => true,
-                               :params => { :upload_token => { 'upload_password' => UPLOAD_PASSWORD } }
-      last_response.should be_ok
-      request "/authenticate", :method => "POST", :xhr => true,
-                               :params => { :upload_token => '{}' }
-      last_response.status.should eql(403)
-      request "/authenticate", :method => "POST", :xhr => true,
-                               :params => { :upload_token => JSON.dump({'upload_password' => 'wrong'}) }
-      last_response.status.should eql(403)
+    context "when using AJAX to verify upload password" do
+      context "when sending the right password" do
+        before do
+          request "/authenticate", :method => "POST", :xhr => true,
+                                   :params => { :upload_password => UPLOAD_PASSWORD }
+        end
+        subject { last_response }
+        it { should be_ok }
+      end
+      context "when sending no password" do
+        before do
+          request "/authenticate", :method => "POST", :xhr => true,
+                                   :params => { :upload_password => '' }
+        end
+        subject { last_response.status }
+        it { should == 403 }
+      end
+      context "when sending a JSON dump of the wrong password" do
+        before do
+          request "/authenticate", :method => "POST", :xhr => true,
+                                   :params => { :upload_password => 'wrong'}
+        end
+        subject { last_response.status }
+        it { should == 403 }
+      end
     end
 
     context "when a 'one time download' has been retrieved" do
@@ -222,8 +237,8 @@ describe 'Coquelicot' do
       end
 
       it "should prevent download after the time limit has expired" do
-        # let's be tomorrow
-        Timecop.travel(Date.today + 1) do
+        # let's be the day after tomorrow
+        Timecop.travel(Date.today + 2) do
           get @url
           last_response.status.should eql(410)
         end
@@ -239,8 +254,8 @@ describe 'Coquelicot' do
       url = upload :expire => 60, :file_key => 'test' # 1 hour
       url_name = url.split('/')[-1]
       Dir.glob("#{Coquelicot.depot.path}/*").should have(1).items
-      # let's be tomorrow
-      Timecop.travel(Date.today + 1) do
+      # let's be the day after tomorrow
+      Timecop.travel(Date.today + 2) do
         Coquelicot.depot.gc!
         files = Dir.glob("#{Coquelicot.depot.path}/*")
         files.should have(1).items
@@ -269,8 +284,8 @@ describe 'Coquelicot' do
       Net::IMAP.should_receive(:new).with('example.org', 993, true).and_return(imap)
 
       request "/authenticate", :method => "POST", :xhr => true,
-                               :params => { 'imap_user'     => 'user',
-                                            'imap_password' => 'password' }
+                               :params => { :imap_user     => 'user',
+                                            :imap_password => 'password' }
       last_response.should be_ok
     end
   end