To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / test / integration / api_test / .svn / text-base / disabled_rest_api_test.rb.svn-base @ 441:cbce1fd3b1b7

History | View | Annotate | Download (3.75 KB)

1
require File.expand_path('../../../test_helper', __FILE__)
2

    
3
class ApiTest::DisabledRestApiTest < ActionController::IntegrationTest
4
  fixtures :all
5

    
6
  def setup
7
    Setting.rest_api_enabled = '0'
8
    Setting.login_required = '1'
9
  end
10

    
11
  def teardown
12
    Setting.rest_api_enabled = '1'
13
    Setting.login_required = '0'
14
  end
15
  
16
  # Using the NewsController because it's a simple API.
17
  context "get /news with the API disabled" do
18

    
19
    context "in :xml format" do
20
      context "with a valid api token" do
21
        setup do
22
          @user = User.generate_with_protected!
23
          @token = Token.generate!(:user => @user, :action => 'api')
24
          get "/news.xml?key=#{@token.value}"
25
        end
26
        
27
        should_respond_with :unauthorized
28
        should_respond_with_content_type :xml
29
        should "not login as the user" do
30
          assert_equal User.anonymous, User.current
31
        end
32
      end
33

    
34
      context "with a valid HTTP authentication" do
35
        setup do
36
          @user = User.generate_with_protected!(:password => 'my_password', :password_confirmation => 'my_password')
37
          @authorization = ActionController::HttpAuthentication::Basic.encode_credentials(@user.login, 'my_password')
38
          get "/news.xml", nil, :authorization => @authorization
39
        end
40
        
41
        should_respond_with :unauthorized
42
        should_respond_with_content_type :xml
43
        should "not login as the user" do
44
          assert_equal User.anonymous, User.current
45
        end
46
      end
47

    
48
      context "with a valid HTTP authentication using the API token" do
49
        setup do
50
          @user = User.generate_with_protected!
51
          @token = Token.generate!(:user => @user, :action => 'api')
52
          @authorization = ActionController::HttpAuthentication::Basic.encode_credentials(@token.value, 'X')
53
          get "/news.xml", nil, :authorization => @authorization
54
        end
55
        
56
        should_respond_with :unauthorized
57
        should_respond_with_content_type :xml
58
        should "not login as the user" do
59
          assert_equal User.anonymous, User.current
60
        end
61
      end
62
    end
63

    
64
    context "in :json format" do
65
      context "with a valid api token" do
66
        setup do
67
          @user = User.generate_with_protected!
68
          @token = Token.generate!(:user => @user, :action => 'api')
69
          get "/news.json?key=#{@token.value}"
70
        end
71
        
72
        should_respond_with :unauthorized
73
        should_respond_with_content_type :json
74
        should "not login as the user" do
75
          assert_equal User.anonymous, User.current
76
        end
77
      end
78

    
79
      context "with a valid HTTP authentication" do
80
        setup do
81
          @user = User.generate_with_protected!(:password => 'my_password', :password_confirmation => 'my_password')
82
          @authorization = ActionController::HttpAuthentication::Basic.encode_credentials(@user.login, 'my_password')
83
          get "/news.json", nil, :authorization => @authorization
84
        end
85
        
86
        should_respond_with :unauthorized
87
        should_respond_with_content_type :json
88
        should "not login as the user" do
89
          assert_equal User.anonymous, User.current
90
        end
91
      end
92

    
93
      context "with a valid HTTP authentication using the API token" do
94
        setup do
95
          @user = User.generate_with_protected!
96
          @token = Token.generate!(:user => @user, :action => 'api')
97
          @authorization = ActionController::HttpAuthentication::Basic.encode_credentials(@token.value, 'DoesNotMatter')
98
          get "/news.json", nil, :authorization => @authorization
99
        end
100

    
101
        should_respond_with :unauthorized
102
        should_respond_with_content_type :json
103
        should "not login as the user" do
104
          assert_equal User.anonymous, User.current
105
        end
106
      end
107
      
108
    end    
109
  end
110
end