blob: 639dde8c4fdb23a0975b38f77178939583ed0558 [file] [log] [blame]
require File.dirname(__FILE__) + '/../test_helper'
require 'uploads_controller'
#--######################################################################
# Copyright (c) 2006 Logica
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#
# Onno van der Straaten:: initial implementation
#++######################################################################
# {Copyright (c) 2006 Logica}[link:files/COPYRIGHT.html]
class UploadsController; def rescue_action(e) raise e end; end
class UploadsControllerTest < Test::Unit::TestCase
fixtures :users
def setup
logger.debug "Test Case: #{name}"
@controller = UploadsController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
@andy = users(:andy) # admin
@george = users(:george) # central admin
@tony = users(:tony) # user
end
# Shows:
# 1. Logon
# 2. Logged in user can upload image
# 4. User cannot update upload of another user
# 5. Admin can update upload of another user
# 6. Admin cannot destroy upload of another user
# 7. User cannot destroy own upload
# 8. Cadmin can destroy upload of another user
def test_new
assert_equal 0, Upload.count
# 1
post :new
assert_redirected_to :controller => 'login'
# 2
session['user'] = @andy
post :new, :upload => {:upload_type => 'Image', :description => 'OpenUP PT image', :file => upload_file("#{ENV['EPFWIKI_ROOT_DIR']}test/functional/uploads_controller_test/openup_pt.jpg", 'image/jpeg')}
assert_redirected_to :action => 'list'
assert_equal 1, Upload.count
assert_not_nil assigns(:upload)
assert File.exists?(assigns(:upload).path)
# 4
get :index
session['user'] = @tony
upload = Upload.find(:first)
post :update, :id => upload.id, :upload => {:description => 'image'}
assert_equal ::FLASH_NOT_OWNER, flash['error']
upload.reload
assert_equal 'OpenUP PT image', upload.description
# 5
upload.user = @tony
assert upload.save
session['user'] = @andy
post :update, :id => upload.id, :upload => {:description => 'image'}
assert_equal nil, flash['error']
upload.reload
assert_equal 'image', upload.description
# 6
get :index
session['user'] = @andy
upload = Upload.find(:first)
assert session['user'] != upload.user
post :destroy, :id => upload
assert_equal LoginController::FLASH_UNOT_CADMIN, flash['error']
assert Upload.exists?(upload.id)
upload2 = Upload.new(:filename => upload.filename, :upload_type => upload.upload_type,
:content_type => upload.content_type, :description => upload.description,
:user_id => upload.user_id, :rel_path => upload.rel_path)
assert upload2.save
# 7
session['user'] = @tony
assert session['user'], upload.user
post :destroy, :id => upload
assert Upload.exists?(upload)
# 8 # TODO test this, currently we cannot test this because use of request.referer causes errors: "The error occurred while evaluating nil.[]"
#session['user'] = @george
#assert session['user'], upload2.user
#post :destroy, :id => upload2
#assert !Upload.exists?(upload2)
#assert_equal 0, Upload.count
end
end