Initial import
This commit is contained in:
51
test/unit/attachment_test.rb
Normal file
51
test/unit/attachment_test.rb
Normal file
@@ -0,0 +1,51 @@
|
||||
# Engenharia de Software 2007.1
|
||||
# Copyright (C) 2007, Adriano, Alinson, Andre, Rafael e Bustamante
|
||||
#
|
||||
# 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.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class AttachmentTest < Test::Unit::TestCase
|
||||
fixtures :attachments
|
||||
|
||||
def setup
|
||||
# Cria um pseudo-arquivo, com conteudo qualquer
|
||||
@test_file = StringIO.new
|
||||
@test_file.puts("temp" * 10)
|
||||
@test_file.rewind
|
||||
end
|
||||
|
||||
def test_create_and_destroy_attachment
|
||||
# Cria o anexo
|
||||
att = Attachment.new(:file_name => 'test_file', :content_type => 'text/plain',
|
||||
:description => 'A test file', :course_id => 1)
|
||||
att.file = @test_file
|
||||
|
||||
# Verifica gravacao no bando de dados
|
||||
assert att.save
|
||||
|
||||
# Verifica se o arquivo foi criado no sistema de arquivos
|
||||
file_path = "#{RAILS_ROOT}/public/upload/1/#{att.id}"
|
||||
assert_equal @test_file.size, att.size
|
||||
assert File.exists?(file_path)
|
||||
|
||||
# Verifica se o conteudo do arquivo gerado eh igual ao conteudo do
|
||||
# arquivo original
|
||||
@test_file.rewind
|
||||
assert_equal @test_file.read, File.open(file_path, "r").read
|
||||
|
||||
# Deleta o anexo
|
||||
#att.destroy
|
||||
|
||||
# Verifica se o arquivo foi excluido
|
||||
#assert !File.exists?(file_path)
|
||||
end
|
||||
end
|
||||
114
test/unit/course_test.rb
Normal file
114
test/unit/course_test.rb
Normal file
@@ -0,0 +1,114 @@
|
||||
# Engenharia de Software 2007.1
|
||||
# Copyright (C) 2007, Adriano, Alinson, Andre, Rafael e Bustamante
|
||||
#
|
||||
# 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.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class CourseTest < Test::Unit::TestCase
|
||||
|
||||
fixtures :courses
|
||||
|
||||
def test_crud
|
||||
# Create
|
||||
old_count = Course.count
|
||||
|
||||
c = Course.new
|
||||
c.short_name = 'teste'
|
||||
c.full_name = 'teste'
|
||||
c.description = 'teste'
|
||||
|
||||
assert c.save
|
||||
assert_equal old_count + 1, Course.count
|
||||
|
||||
# Retrieve
|
||||
c2 = Course.find(c.id)
|
||||
assert_equal c2.description, c.description
|
||||
assert_equal c2.full_name, c.full_name
|
||||
assert_equal c2.short_name, c.short_name
|
||||
|
||||
# Update
|
||||
assert c.update_attributes(:short_name => 'teste29')
|
||||
assert_equal c.short_name, 'teste2'
|
||||
|
||||
# Delete
|
||||
id = c.id
|
||||
assert c.destroy
|
||||
assert_raises(ActiveRecord::RecordNotFound) { Course.find(id) }
|
||||
assert_equal old_count, Course.count
|
||||
end
|
||||
|
||||
|
||||
def test_validates_presence
|
||||
required_fields = [:short_name, :full_name, :description]
|
||||
required_fields.each do |attr|
|
||||
c = courses(:course_1).clone
|
||||
c.short_name = 'new_test'
|
||||
c.send("#{attr}=", "")
|
||||
|
||||
assert !c.valid?, attr
|
||||
assert_equal 1, c.errors.count, attr
|
||||
assert_not_nil c.errors[attr], attr
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def test_validates_uniqueness_of_short_name
|
||||
c = courses(:course_1).clone
|
||||
assert !c.save
|
||||
assert_not_nil c.errors[:short_name]
|
||||
end
|
||||
|
||||
|
||||
def test_associations
|
||||
associations = [:attachments, :wiki_pages, :shoutbox_messages, :news, :events]
|
||||
c = courses(:course_1)
|
||||
associations.each do |a|
|
||||
assert_nothing_raised {
|
||||
c.send("#{a}").find(:all)
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def test_orphaned_records
|
||||
# Escolhe um curso qualquer
|
||||
course = courses(:course_1)
|
||||
|
||||
# Cria alguns objetos associados ao curso
|
||||
attachment = Attachment.create(:file_name => 'test', :content_type => 'text/plain',
|
||||
:last_modified => Time.now, :description => 'test', :size => 1.megabyte,
|
||||
:course_id => course.id)
|
||||
|
||||
wiki_page = WikiPage.create(:title => 'teste', :course_id => course.id)
|
||||
|
||||
shoutbox_message = Message.create(:title => 'test', :body => 'test body',
|
||||
:timestamp => Time.now, :type => "CourseShoutboxMessage",
|
||||
:sender_id => 0, :receiver_id => course.id)
|
||||
|
||||
news_message = Message.create(:title => 'test', :body => 'test body',
|
||||
:timestamp => Time.now, :type => "News",
|
||||
:sender_id => 0, :receiver_id => course.id)
|
||||
|
||||
event = Event.create(:title => 'test', :date => Time.now, :time => Time.now,
|
||||
:created_by => 0, :course_id => course.id, :description => 'test')
|
||||
|
||||
# Deleta o curso
|
||||
course.destroy
|
||||
|
||||
# Ve o que aconteceu com os objetos
|
||||
assert_raises(ActiveRecord::RecordNotFound) { Attachment.find(attachment.id) }
|
||||
assert_raises(ActiveRecord::RecordNotFound) { WikiPage.find(wiki_page.id) }
|
||||
assert_raises(ActiveRecord::RecordNotFound) { CourseShoutboxMessage.find(shoutbox_message.id) }
|
||||
assert_raises(ActiveRecord::RecordNotFound) { News.find(news_message.id) }
|
||||
assert_raises(ActiveRecord::RecordNotFound) { Event.find(event.id) }
|
||||
end
|
||||
end
|
||||
23
test/unit/event_test.rb
Normal file
23
test/unit/event_test.rb
Normal file
@@ -0,0 +1,23 @@
|
||||
# Engenharia de Software 2007.1
|
||||
# Copyright (C) 2007, Adriano, Alinson, Andre, Rafael e Bustamante
|
||||
#
|
||||
# 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.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class EventTest < Test::Unit::TestCase
|
||||
fixtures :events
|
||||
|
||||
# Replace this with your real tests.
|
||||
def test_truth
|
||||
assert true
|
||||
end
|
||||
end
|
||||
8
test/unit/log_entry_test.rb
Normal file
8
test/unit/log_entry_test.rb
Normal file
@@ -0,0 +1,8 @@
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class LogEntryTest < ActiveSupport::TestCase
|
||||
# Replace this with your real tests.
|
||||
def test_truth
|
||||
assert true
|
||||
end
|
||||
end
|
||||
23
test/unit/message_test.rb
Normal file
23
test/unit/message_test.rb
Normal file
@@ -0,0 +1,23 @@
|
||||
# Engenharia de Software 2007.1
|
||||
# Copyright (C) 2007, Adriano, Alinson, Andre, Rafael e Bustamante
|
||||
#
|
||||
# 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.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class MessageTest < Test::Unit::TestCase
|
||||
fixtures :messages
|
||||
|
||||
# Replace this with your real tests.
|
||||
def test_truth
|
||||
assert true
|
||||
end
|
||||
end
|
||||
48
test/unit/notifications_test.rb
Normal file
48
test/unit/notifications_test.rb
Normal file
@@ -0,0 +1,48 @@
|
||||
# Engenharia de Software 2007.1
|
||||
# Copyright (C) 2007, Adriano, Alinson, Andre, Rafael e Bustamante
|
||||
#
|
||||
# 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.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class NotificationsTest < Test::Unit::TestCase
|
||||
FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures'
|
||||
CHARSET = "utf-8"
|
||||
|
||||
include ActionMailer::Quoting
|
||||
|
||||
def setup
|
||||
ActionMailer::Base.delivery_method = :test
|
||||
ActionMailer::Base.perform_deliveries = true
|
||||
ActionMailer::Base.deliveries = []
|
||||
|
||||
@expected = TMail::Mail.new
|
||||
@expected.set_content_type "text", "plain", { "charset" => CHARSET }
|
||||
@expected.mime_version = '1.0'
|
||||
end
|
||||
|
||||
def test_forgot_password
|
||||
@expected.subject = 'Notifications#forgot_password'
|
||||
@expected.body = read_fixture('forgot_password')
|
||||
@expected.date = Time.now
|
||||
|
||||
#assert_equal @expected.encoded, Notifications.create_forgot_password(@expected.date).encoded
|
||||
end
|
||||
|
||||
private
|
||||
def read_fixture(action)
|
||||
IO.readlines("#{FIXTURES_PATH}/notifications/#{action}")
|
||||
end
|
||||
|
||||
def encode(subject)
|
||||
quoted_printable(subject, CHARSET)
|
||||
end
|
||||
end
|
||||
234
test/unit/user_test.rb
Normal file
234
test/unit/user_test.rb
Normal file
@@ -0,0 +1,234 @@
|
||||
# Engenharia de Software 2007.1
|
||||
# Copyright (C) 2007, Adriano, Alinson, Andre, Rafael e Bustamante
|
||||
#
|
||||
# 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.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class UserTest < Test::Unit::TestCase
|
||||
|
||||
fixtures :users
|
||||
|
||||
def test_login
|
||||
assert_equal users(:bob), User.find_by_login_and_pass("bob", "test")
|
||||
assert_nil User.find_by_login_and_pass("wrong_bob", "test")
|
||||
assert_nil User.find_by_login_and_pass("bob", "wrongpass")
|
||||
assert_nil User.find_by_login_and_pass("wrong_bob", "wrongpass")
|
||||
end
|
||||
|
||||
|
||||
def test_change_password
|
||||
user = users(:longbob)
|
||||
|
||||
# Check success
|
||||
assert_equal user, User.find_by_login_and_pass("longbob", "longtest")
|
||||
|
||||
# Change password
|
||||
user.password = user.password_confirmation = "nonbobpasswd"
|
||||
assert user.save, user.errors.full_messages
|
||||
|
||||
# New password works
|
||||
assert_equal user, User.find_by_login_and_pass("longbob", "nonbobpasswd")
|
||||
|
||||
# Old pasword doesn't work anymore
|
||||
assert_nil User.find_by_login_and_pass("longbob", "longtest")
|
||||
|
||||
# Change back again
|
||||
user.password = user.password_confirmation = "longtest"
|
||||
|
||||
assert user.save
|
||||
assert_equal user, User.find_by_login_and_pass("longbob", "longtest")
|
||||
assert_nil User.find_by_login_and_pass("longbob", "nonbobpasswd")
|
||||
end
|
||||
|
||||
|
||||
def test_keep_old_password
|
||||
# Dont change the password
|
||||
user = users(:longbob)
|
||||
user.name = "brand new bob"
|
||||
|
||||
assert user.save
|
||||
assert_equal user, User.find_by_login_and_pass("longbob", "longtest")
|
||||
assert_nil User.find_by_login_and_pass("longbob", "")
|
||||
|
||||
# Set a blank password
|
||||
user.password = user.password_confirmation = ""
|
||||
|
||||
assert user.save
|
||||
assert_equal user, User.find_by_login_and_pass("longbob", "longtest")
|
||||
assert_nil User.find_by_login_and_pass("longbob", "")
|
||||
end
|
||||
|
||||
|
||||
def test_validate_password_confirmation
|
||||
u = users(:longbob)
|
||||
|
||||
# No confirmation
|
||||
u.password = "hello"
|
||||
assert !u.valid?
|
||||
assert u.errors.invalid?('password_confirmation')
|
||||
|
||||
# Wrong confirmation
|
||||
u.password_confirmation = "wrong hello"
|
||||
assert !u.valid?
|
||||
assert u.errors.invalid?('password_confirmation')
|
||||
|
||||
# Valid confirmation
|
||||
u.password = u.password_confirmation = "hello world"
|
||||
assert u.valid?
|
||||
end
|
||||
|
||||
|
||||
def test_validate_password
|
||||
u = users(:bob)
|
||||
u.login = "anotherbob"
|
||||
u.email = "anotherbob@bob.com"
|
||||
|
||||
# Too short
|
||||
u.password = u.password_confirmation = "tiny"
|
||||
assert !u.valid?
|
||||
assert u.errors.invalid?('password')
|
||||
|
||||
# Too long
|
||||
u.password = u.password_confirmation = "huge" * 50
|
||||
assert !u.valid?
|
||||
assert u.errors.invalid?('password')
|
||||
|
||||
# Empty
|
||||
newbob = User.new(:login => 'newbob', :email => 'bob@bob.com', :name => 'bob')
|
||||
newbob.password = newbob.password_confirmation = ""
|
||||
assert !newbob.valid?
|
||||
assert newbob.errors.invalid?('password')
|
||||
|
||||
# OK
|
||||
u.password = u.password_confirmation = "bobs_secure_password"
|
||||
assert u.save, u.errors.full_messages
|
||||
assert u.errors.empty?
|
||||
end
|
||||
|
||||
|
||||
def test_validate_login
|
||||
u = users(:bob)
|
||||
u.password = u.password_confirmation = "bobs_secure_password"
|
||||
u.email = "okbob@mcbob.com"
|
||||
|
||||
# Too short
|
||||
u.login = "x"
|
||||
assert !u.valid?
|
||||
assert u.errors.invalid?('login')
|
||||
assert_equal 1, u.errors.count, u.errors.full_messages
|
||||
|
||||
# Too long
|
||||
u.login = "hugebob" * 50
|
||||
assert !u.valid?
|
||||
assert u.errors.invalid?('login')
|
||||
assert_equal 1, u.errors.count, u.errors.full_messages
|
||||
|
||||
# Empty
|
||||
u.login = ""
|
||||
assert !u.valid?
|
||||
assert u.errors.invalid?('login')
|
||||
assert_equal 2, u.errors.count, u.errors.full_messages
|
||||
|
||||
# OK
|
||||
u.login = "okbob"
|
||||
assert u.valid?
|
||||
assert u.errors.empty?
|
||||
end
|
||||
|
||||
|
||||
def test_validate_email
|
||||
u = users(:longbob)
|
||||
|
||||
# No email
|
||||
u.email = nil
|
||||
assert !u.valid?
|
||||
assert u.errors.invalid?('email')
|
||||
assert_equal 2, u.errors.count, u.errors.full_messages
|
||||
|
||||
# Invalid email
|
||||
u.email='notavalidemail'
|
||||
assert !u.valid?
|
||||
assert u.errors.invalid?('email')
|
||||
assert_equal 1, u.errors.count, u.errors.full_messages
|
||||
|
||||
# OK
|
||||
u.email="validbob@mcbob.com"
|
||||
assert u.valid?
|
||||
assert u.errors.empty?
|
||||
end
|
||||
|
||||
def test_signup
|
||||
u = User.new
|
||||
u.last_seen = Time.now
|
||||
u.login = "new bob"
|
||||
u.display_name = "new bob"
|
||||
u.name = u.email = "new@email.com"
|
||||
u.password = u.password_confirmation = "new password"
|
||||
|
||||
assert u.save, u.errors.full_messages
|
||||
assert_equal u, User.find_by_login_and_pass(u.login, u.password)
|
||||
|
||||
assert_not_nil u.salt
|
||||
assert_equal 10, u.salt.length
|
||||
end
|
||||
|
||||
# def test_send_new_password
|
||||
# #check user find_by_login_and_passs
|
||||
# assert_equal @bob, User.find_by_login_and_pass("bob", "test")
|
||||
#
|
||||
# #send new password
|
||||
# sent = @bob.send_new_password
|
||||
# assert_not_nil sent
|
||||
#
|
||||
# #old password no longer workd
|
||||
# assert_nil User.find_by_login_and_pass("bob", "test")
|
||||
#
|
||||
# #email sent...
|
||||
# assert_equal "Your password is ...", sent.subject
|
||||
#
|
||||
# #... to bob
|
||||
# assert_equal @bob.email, sent.to[0]
|
||||
# #assert_match Regexp.new("Your username is bob."), sent.body
|
||||
#
|
||||
# #can find_by_login_and_pass with the new password
|
||||
# #new_pass = $1 if Regexp.new("Your new password is (\\w+).") =~ sent.body
|
||||
# #assert_not_nil new_pass
|
||||
# #assert_equal @bob, User.find_by_login_and_pass("bob", new_pass)
|
||||
# end
|
||||
|
||||
def test_generate_random_pass
|
||||
new_pass = User.random_string(10)
|
||||
assert_not_nil new_pass
|
||||
assert_equal 10, new_pass.length
|
||||
end
|
||||
|
||||
|
||||
def test_sha1
|
||||
u = users(:bob)
|
||||
u.password = u.password_confirmation = "bobs_secure_password"
|
||||
|
||||
assert u.save
|
||||
assert_equal 'b1d27036d59f9499d403f90e0bcf43281adaa844', u.hashed_password
|
||||
assert_equal 'b1d27036d59f9499d403f90e0bcf43281adaa844', User.encrypt("bobs_secure_password", u.salt)
|
||||
end
|
||||
|
||||
|
||||
def test_protected_attributes
|
||||
u = users(:bob)
|
||||
u.update_attributes(:id => 999999, :salt => "I-want-to-set-my-salt", :login => "verybadbob")
|
||||
|
||||
assert u.save
|
||||
assert_not_equal 999999, u.id
|
||||
assert_not_equal "I-want-to-set-my-salt", u.salt
|
||||
assert_equal "verybadbob", u.login
|
||||
end
|
||||
end
|
||||
33
test/unit/wiki_page_test.rb
Normal file
33
test/unit/wiki_page_test.rb
Normal file
@@ -0,0 +1,33 @@
|
||||
# Engenharia de Software 2007.1
|
||||
# Copyright (C) 2007, Adriano, Alinson, Andre, Rafael e Bustamante
|
||||
#
|
||||
# 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.
|
||||
|
||||
require File.dirname(__FILE__) + '/../test_helper'
|
||||
|
||||
class WikiPageTest < Test::Unit::TestCase
|
||||
|
||||
def test_should_create_new_version_when_editing
|
||||
wp = WikiPage.create(:content => 'test', :title => 'test', :version => 1, :course_id => 1)
|
||||
assert !wp.save_version?
|
||||
|
||||
wp.content = 'new content'
|
||||
assert wp.save_version?
|
||||
end
|
||||
|
||||
def test_should_not_create_new_version_when_reordering
|
||||
wp = WikiPage.create(:content => 'test', :title => 'test', :version => 1, :course_id => 1)
|
||||
assert !wp.save_version?
|
||||
|
||||
wp.move_higher
|
||||
assert !wp.save_version?
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user