blob: d43fd6840ed0a4ed5fed931e564852ae82ff8755 [file] [log] [blame]
#TODO: ipv popup moeten we :confirm gebruiken?
#TODO: paginate testen, wordt niet goed getest of in ieder geval niet overal geste
require 'test_helper'
class UploadsControllerTest < ActionController::TestCase
def setup
@controller = UploadsController.new
#@request = ActionController::TestRequest.new
#@response = ActionController::TestResponse.new
@george = Factory(:user, :name => 'George Shapiro', :password => 'secret', :admin => 'C')
@andy = Factory(:user, :name => 'Andy Kaufman', :password => 'secret', :admin => 'Y')
@cash = Factory(:user, :name => 'Cash Oshman', :password => 'secret', :admin => 'N')
@tony = Factory(:user, :name => 'Tony Clifton', :password => 'secret', :admin => 'N')
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
test "New and list uploads" do
assert_equal 0, Upload.count
# 1
post :new
assert_redirected_to :controller => 'login'
# 2
session['user'] = @andy.id
post :create, :upload => {:upload_type => 'Image', :description => 'OpenUP PT image', :file => Rack::Test::UploadedFile.new(Rails.root.join('test/fixtures/files/openup_pt.jpg'), 'image/jpeg')}
assert_redirected_to :action => 'index'
assert_equal 1, Upload.count
assert_not_nil assigns(:upload)
assert File.exists?(assigns(:upload).path)
# 4
assert_equal 1, Upload.count
get :index
session['user'] = @tony.id
upload = Upload.find(:first)
post :update, :id => upload.id, :upload => {:description => 'image'}
assert_equal Utils::FLASH_NOT_OWNER, flash['error']
upload.reload
assert_equal 'OpenUP PT image', upload.description
flash['error'] = nil
# 5
upload.user = @tony
assert upload.save
session['user'] = @andy.id # het lukt me niet om de session user te veranderen
assert_equal @andy, session_user
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.id
upload = Upload.find(:first)
assert session['user'] != upload.user.id
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.id
assert_equal session['user'], upload.user.id
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.id
assert session['user'] != upload2.user.id
assert_equal 2, Upload.count
post :destroy, :id => upload2
assert !Upload.exists?(upload2)
assert_equal 1, Upload.count
end
end