diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/fixtures/enabled_modules.yml | 4 | ||||
-rw-r--r-- | test/fixtures/news.yml | 9 | ||||
-rw-r--r-- | test/integration/api_test/news_test.rb | 94 |
3 files changed, 107 insertions, 0 deletions
diff --git a/test/fixtures/enabled_modules.yml b/test/fixtures/enabled_modules.yml index 5f2ba63d1..3b4eb7ace 100644 --- a/test/fixtures/enabled_modules.yml +++ b/test/fixtures/enabled_modules.yml @@ -95,3 +95,7 @@ enabled_modules_024: name: gantt project_id: 5 id: 24 +enabled_modules_025: + name: news + project_id: 2 + id: 25 diff --git a/test/fixtures/news.yml b/test/fixtures/news.yml index 1819095ce..9876065e1 100644 --- a/test/fixtures/news.yml +++ b/test/fixtures/news.yml @@ -20,3 +20,12 @@ news_002: summary: eCookbook 1.0 have downloaded 100,000 times author_id: 2 comments_count: 0 +news_003: + created_on: 2006-07-19 22:42:58 +02:00 + project_id: 2 + title: News on a private project + id: 3 + description: This is a private news + summary: + author_id: 2 + comments_count: 0 diff --git a/test/integration/api_test/news_test.rb b/test/integration/api_test/news_test.rb new file mode 100644 index 000000000..2d09e6d4c --- /dev/null +++ b/test/integration/api_test/news_test.rb @@ -0,0 +1,94 @@ +# Redmine - project management software +# Copyright (C) 2006-2010 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require "#{File.dirname(__FILE__)}/../../test_helper" +require 'pp' +class ApiTest::NewsTest < ActionController::IntegrationTest + fixtures :all + + def setup + Setting.rest_api_enabled = '1' + end + + context "GET /news" do + context ".xml" do + should "return news" do + get '/news.xml' + + assert_tag :tag => 'news', + :attributes => {:type => 'array'}, + :child => { + :tag => 'news', + :child => { + :tag => 'id', + :content => '2' + } + } + end + end + + context ".json" do + should "return news" do + get '/news.json' + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Array, json['news'] + assert_kind_of Hash, json['news'].first + assert_equal 2, json['news'].first['id'] + end + end + end + + context "GET /projects/:project_id/news" do + context ".xml" do + should_allow_api_authentication(:get, "/projects/onlinestore/news.xml") + + should "return news" do + get '/projects/ecookbook/news.xml' + + assert_tag :tag => 'news', + :attributes => {:type => 'array'}, + :child => { + :tag => 'news', + :child => { + :tag => 'id', + :content => '2' + } + } + end + end + + context ".json" do + should_allow_api_authentication(:get, "/projects/onlinestore/news.json") + + should "return news" do + get '/projects/ecookbook/news.json' + + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Hash, json + assert_kind_of Array, json['news'] + assert_kind_of Hash, json['news'].first + assert_equal 2, json['news'].first['id'] + end + end + end + + def credentials(user, password=nil) + ActionController::HttpAuthentication::Basic.encode_credentials(user, password || user) + end +end |