require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'spec_controller_helper'))
require 'spec/interop/test'

describe 'Castronaut Application Controller' do

  describe "requesting / via GET" do

    it "redirects to /login" do
      get_it '/'

      should be_redirection
    end

  end

  describe "requesting /login via GET" do

    it "responds with status 200" do
      get_it '/login', :env => { 'REMOTE_ADDR' => '10.0.0.1' }

      should be_ok
    end

    it "sets the Pragma header to 'no-cache'" do
      get_it '/login', :env => { 'REMOTE_ADDR' => '10.0.0.1' }

      headers['Pragma'].should == 'no-cache'
    end

    it "sets the Cache-Control header to 'no-store'" do
      get_it '/login', :env => { 'REMOTE_ADDR' => '10.0.0.1' }

      headers['Cache-Control'].should == 'no-store'
    end

    it "sets the Expires header to '5 years ago in rfc2822 format'" do
      jan_1st_2008 = Time.parse("01/01/2008 00:00:00")
      jan_1st_2003 = Time.parse("01/01/2003 00:00:00")
      Time.stub!(:now).and_return(jan_1st_2008)
      
      get_it '/login', :env => { 'REMOTE_ADDR' => '10.0.0.1' }

      headers['Expires'].should include("Wed, 01 Jan 2003 00:00:00")
    end

  end

  describe "requesting /login via POST" do

    it 'responds with status 200' do
      post_it '/login', :env => { 'REMOTE_ADDR' => '10.0.0.1' }

      should be_ok
    end

  end

  describe "requesting /logout via GET" do

    it 'responds with status 200' do
      get_it '/logout', :env => { 'REMOTE_ADDR' => '10.0.0.1' }

      should be_ok
    end

  end

  describe "requesting /serviceValidate via GET" do

    it 'responds with status 200' do
      get_it '/serviceValidate', :env => { 'REMOTE_ADDR' => '10.0.0.1' }

      should be_ok
    end

  end
  
  describe "requesting /proxyValidate via GET" do

    it 'responds with status 200' do
      get_it '/proxyValidate', :env => { 'REMOTE_ADDR' => '10.0.0.1' }

      should be_ok
    end

  end

end

