Initial import

This commit is contained in:
2008-03-02 16:04:34 -03:00
commit 5e4951fa47
798 changed files with 59730 additions and 0 deletions

View 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
View 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
View 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

View 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
View 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

View 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
View 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

View 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