diff --git a/.rspec b/.rspec index c99d2e73..7a2cc1a6 100644 --- a/.rspec +++ b/.rspec @@ -1 +1,3 @@ --require spec_helper +--format documentation +--color diff --git a/Gemfile b/Gemfile index 6f6c0007..b5e7d992 100644 --- a/Gemfile +++ b/Gemfile @@ -70,10 +70,12 @@ group :development, :test do # Environment configuration. gem 'dotenv-rails' +end - # Testing. +group :test do + # Include Rspec and other testing utilities. gem 'rspec-rails', '~> 3.7' - gem 'rails-controller-testing' + gem 'shoulda-matchers', '~> 3.1' gem 'faker' gem "factory_bot_rails" end @@ -82,6 +84,7 @@ group :development do # Access an IRB console on exception pages or by using <%= console %> anywhere in the code. gem 'web-console', '>= 3.3.0' gem 'listen', '~> 3.0.5' + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' diff --git a/Gemfile.lock b/Gemfile.lock index afe4f846..1d04d2d2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -151,10 +151,6 @@ GEM bundler (>= 1.3.0) railties (= 5.0.7) sprockets-rails (>= 2.0.0) - rails-controller-testing (1.0.2) - actionpack (~> 5.x, >= 5.0.1) - actionview (~> 5.x, >= 5.0.1) - activesupport (~> 5.x) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) @@ -203,6 +199,8 @@ GEM bundler ffi (~> 1.9.6) sass (>= 3.3.0) + shoulda-matchers (3.1.2) + activesupport (>= 4.0.0) spring (2.0.2) activesupport (>= 4.2) spring-watcher-listen (2.0.1) @@ -260,10 +258,10 @@ DEPENDENCIES pg (~> 0.18) puma (~> 3.0) rails (~> 5.0.7) - rails-controller-testing redis (~> 3.0) rspec-rails (~> 3.7) sass-rails (~> 5.0) + shoulda-matchers (~> 3.1) spring spring-watcher-listen (~> 2.0.0) sqlite3 diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d0500ee8..b7439e8d 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -48,20 +48,22 @@ class UsersController < ApplicationController errors = {} # Verify that the provided password is correct. - if user_params[:password] && @user.authenticate(user_params[:password]) - # Verify that the new passwords match. - if user_params[:new_password] == user_params[:password_confirmation] - @user.password = user_params[:new_password] + if user_params[:password] + if @user.authenticate(user_params[:password]) + # Verify that the new passwords match. + if user_params[:new_password] == user_params[:password_confirmation] + @user.password = user_params[:new_password] + else + # New passwords don't match. + errors[:password_confirmation] = "'s don't match" + end else - # New passwords don't match. - errors[:password_confirmation] = "'s don't match" + # Original password is incorrect, can't update. + errors[:password] = "is incorrect" end - else - # Original password is incorrect, can't update. - errors[:password] = "is incorrect" end - if @user.save + if @user.save! # Notify the use that their account has been updated. redirect_to edit_user_path(@user), notice: "Information successfully updated." else diff --git a/app/models/room.rb b/app/models/room.rb index a03e464f..4032c10d 100644 --- a/app/models/room.rb +++ b/app/models/room.rb @@ -5,7 +5,6 @@ class Room < ApplicationRecord validates :name, presence: true belongs_to :owner, class_name: 'User', foreign_key: :user_id - has_one :meeting RETURNCODE_SUCCESS = "SUCCESS" diff --git a/app/models/user.rb b/app/models/user.rb index c0ee362f..d47d329e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -13,7 +13,7 @@ class User < ApplicationRecord uniqueness: { case_sensitive: false }, format: {with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i } - validates :password, length: { minimum: 6 }, presence: true, confirmation: true, if: :greenlight_account? + validates :password, length: { minimum: 6 }, presence: true, confirmation: true, allow_blank: true, if: :greenlight_account? # We don't want to require password validations on all accounts. has_secure_password(validations: false) @@ -97,7 +97,7 @@ class User < ApplicationRecord # Initializes a room for the user and assign a BigBlueButton user id. def initialize_main_room - self.uid = "gl-#{(0...12).map { (65 + rand(26)).chr }.join.downcase}" + self.uid = "gl-#{(0...12).map { (65 + rand(26)).chr }.join.downcase}" self.main_room = Room.create!(owner: self, name: firstname + "'s Room") self.save end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 094b35c9..cb114d32 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,7 +1,7 @@ - Greenlight20 + Greenlight <%= csrf_meta_tags %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> diff --git a/spec/controllers/errors_controller_spec.rb b/spec/controllers/errors_controller_spec.rb deleted file mode 100644 index 34b9b5ed..00000000 --- a/spec/controllers/errors_controller_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe ErrorsController, type: :controller do - -end diff --git a/spec/controllers/sessions_controller_spec.rb b/spec/controllers/sessions_controller_spec.rb deleted file mode 100644 index 54b936b9..00000000 --- a/spec/controllers/sessions_controller_spec.rb +++ /dev/null @@ -1,74 +0,0 @@ -require 'rails_helper' - -describe SessionsController, type: :controller do - - context "GET #new," do - it "renders the #new view." do - get :new - expect(response).to render_template :new - end - end - - context "POST #create," do - it "should signin user." do - user = create(:user) - post :create, params: {session: {email: user.email, password: user.password}} - - expect(response).to redirect_to room_path(user.room.uid) - expect(user.id).to eql(session[:user_id]) - end - - it "should render new on fail." do - user = create(:user) - post :create, params: {session: {email: user.email, password: "incorrect_password"}} - - expect(response).to render_template :new - end - end - - context "POST #launch," do - it "should login launched user." do - - end - end - - context "POST #omniauth," do - it "should login omniauth user." do - email = "omniauth@test.com" - uid = "123456789" - - OmniAuth.config.test_mode = true - OmniAuth.config.add_mock(:twitter, { - provider: "twitter", - uid: uid, - info: { - email: email, - name: "Omni User", - nickname: "username" - } - }) - - get "/auth/twitter" - - request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:twitter] - get omniauth_session_path(provider: "twitter") - - user = User.find_by(email: email, uid: uid) - - expect(response).to redirect_to room_path(user.room.uid) - expect(user.id).to eql(session[:user_id]) - end - end - - context "GET #destroy," do - it "should logout user." do - user = create(:user) - session[:user_id] = user.id - get :destroy - - expect(response).to redirect_to root_path - expect(user.id).to_not eql(session[:user_id]) - end - end - -end \ No newline at end of file diff --git a/spec/factories.rb b/spec/factories.rb index d69ebd62..6cf52189 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -13,13 +13,7 @@ FactoryBot.define do end factory :room do - uid { rand(10 ** 8) } - user { create(:user) } - end - - factory :meeting do - uid { rand(10 ** 8) } name { Faker::Pokemon.name } - room { create(:room) } + owner { create(:user) } end -end \ No newline at end of file +end diff --git a/spec/helpers/errors_helper_spec.rb b/spec/helpers/errors_helper_spec.rb deleted file mode 100644 index e3592037..00000000 --- a/spec/helpers/errors_helper_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -require 'rails_helper' - -# Specs in this file have access to a helper object that includes -# the ErrorsHelper. For example: -# -# describe ErrorsHelper do -# describe "string concat" do -# it "concats two strings with spaces" do -# expect(helper.concat_strings("this","that")).to eq("this that") -# end -# end -# end -RSpec.describe ErrorsHelper, type: :helper do - pending "add some examples to (or delete) #{__FILE__}" -end diff --git a/spec/models/meeting_spec.rb b/spec/models/meeting_spec.rb deleted file mode 100644 index 94b317f4..00000000 --- a/spec/models/meeting_spec.rb +++ /dev/null @@ -1,19 +0,0 @@ -require "rails_helper" - -describe Meeting, type: :model do - - it "should be valid." do - meeting = create(:meeting) - expect(meeting).to be_valid - end - - it "name should be present." do - meeting = build(:meeting, name: nil) - expect(meeting).to_not be_valid - end - - it "#random_password is random." do - meeting = create(:meeting) - expect(meeting.send(:random_password, 10)).to_not eql(meeting.send(:random_password, 10)) - end -end diff --git a/spec/models/room_spec.rb b/spec/models/room_spec.rb index 633150df..0ad8fe31 100644 --- a/spec/models/room_spec.rb +++ b/spec/models/room_spec.rb @@ -1,21 +1,27 @@ require "rails_helper" describe Room, type: :model do + before { @room = create(:room) } - describe "#owned_by?" do - it "should identify correct owner." do - room = create(:room) - expect(room.owned_by?(room.user)).to eql(true) - end + context 'validations' do + it { should validate_presence_of :name } + end - it "should identify incorrect owner." do - room = create(:room) - expect(room.owned_by?(create(:user))).to eql(false) - end + context 'associations' do + it { should belong_to(:owner).class_name("User") } + end - it "should return false when user is nil." do - room = create(:room) - expect(room.owned_by?(nil)).to eql(false) + context '#setup' do + it 'creates random uid and bbb_id' do + expect(@room.uid).to_not be_nil + expect(@room.bbb_id).to_not be_nil end end -end \ No newline at end of file + + context "#to_param" do + it "uses uid as the default identifier for routes" do + expect(@room.to_param).to eq(@room.uid) + end + end + +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index c652e340..3ec7907e 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1,105 +1,59 @@ require "rails_helper" describe User, type: :model do + before { @user = create(:user) } - it "should be valid." do - user = create(:user) - expect(user).to be_valid - end + context 'validations' do + it { should validate_presence_of(:name) } + it { should validate_length_of(:name).is_at_most(24) } - it "name should be present." do - user = build(:user, name: nil) - expect(user).to_not be_valid - end + it { should validate_presence_of(:provider) } - it "username should be present." do - user = build(:user, username: nil) - expect(user).to_not be_valid - end + it { should validate_uniqueness_of(:email).case_insensitive } + it { should validate_length_of(:email).is_at_most(60) } + it { should allow_value("", nil).for(:email) } + it { should allow_value("valid@email.com").for(:email) } + it { should_not allow_value("invalid_email").for(:email) } - it "provider should be present." do - user = build(:user, provider: nil) - expect(user).to_not be_valid - end + it { should allow_value("valid.jpg").for(:image) } + it { should allow_value("valid.png").for(:image) } + it { should_not allow_value("invalid.txt").for(:image) } + it { should allow_value("", nil).for(:image) } - it "should allow nil email." do - user = build(:user, email: nil) - expect(user).to be_valid - end + context 'is greenlight account' do + before { allow(subject).to receive(:greenlight_account?).and_return(true) } + it { should validate_presence_of(:password) } + it { should validate_length_of(:password).is_at_least(6) } + end - it "should allow nil uid." do - user = build(:user, uid: nil) - expect(user).to be_valid - end - - it "should allow nil password." do - user = build(:user, password: nil, password_confirmation: nil) - expect(user).to be_valid - end - - it "password should be longer than six characters." do - user = build(:user, password: "short") - expect(user).to_not be_valid - end - - it "should create user from omniauth." do - auth = { - "uid" => "123456789", - "provider" => "twitter", - "info" => { - "name" => "Test Name", - "nickname" => "username", - "email" => "test@example.com" - } - } - - user = User.from_omniauth(auth) - - expect(user.name).to eql(auth["info"]["name"]) - expect(user.username).to eql(auth["info"]["nickname"]) - end - - it "email addresses should be saved as lower-case." do - mixed = "ExAmPlE@eXaMpLe.CoM" - - user = build(:user, email: mixed) - user.save - - expect(user.email).to eql(mixed.downcase) - end - - it "email validation should reject invalid addresses." do - invalid_addresses = %w[user@example,com user_at_foo.org user.name@example. foo@bar_baz.com foo@bar+baz.com] - user = create(:user) - - invalid_addresses.each do |invalid_address| - user.email = invalid_address - expect(user).to_not be_valid + context 'is not greenlight account' do + before { allow(subject).to receive(:greenlight_account?).and_return(false) } + it { should_not validate_presence_of(:password) } end end - it "email should be unique." do - user = create(:user) - duplicate = user.dup - - expect(duplicate).to_not be_valid + context 'associations' do + it { should belong_to(:main_room).class_name("Room").with_foreign_key("room_id") } + it { should have_many(:rooms) } end - it "name should not be too long." do - user = build(:user, name: "a" * 25) - expect(user).to_not be_valid + context '#initialize_main_room' do + it 'creates random uid and main_room' do + expect(@user.uid).to_not be_nil + expect(@user.main_room).to be_a(Room) + end end - it "email should not be too long." do - user = build(:user, email: "a" * 50 + "@example.com") - expect(user).to_not be_valid + context "#to_param" do + it "uses uid as the default identifier for routes" do + expect(@user.to_param).to eq(@user.uid) + end end - it "should generate room and meeting when saved." do - user = create(:user) - user.save - - expect(user.room).to be_instance_of Room - expect(user.room.meeting).to be_instance_of Meeting + context '#first_name' do + it 'properly finds the users first name' do + user = create(:user, name: "Example User") + expect(user.firstname).to eq("Example") + end end -end \ No newline at end of file +end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 5d54bf4f..6c4f2f18 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -21,7 +21,7 @@ require 'rspec/rails' # directory. Alternatively, in the individual `*_spec.rb` files, manually # require only the support files necessary. # -# Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f } +Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f } # Checks for pending migrations and applies them before tests are run. # If you are not using ActiveRecord, you can remove this line. diff --git a/spec/support/shoulda_matchers.rb b/spec/support/shoulda_matchers.rb new file mode 100644 index 00000000..e5f3a067 --- /dev/null +++ b/spec/support/shoulda_matchers.rb @@ -0,0 +1,9 @@ +# Configure Shoulda-Matchers. + +Shoulda::Matchers.configure do |config| + config.integrate do |with| + with.test_framework :rspec + + with.library :rails + end +end diff --git a/test/controllers/.keep b/test/controllers/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/test/controllers/main_controller_test.rb b/test/controllers/main_controller_test.rb deleted file mode 100644 index 4eb7ce00..00000000 --- a/test/controllers/main_controller_test.rb +++ /dev/null @@ -1,7 +0,0 @@ -require 'test_helper' - -class MainControllerTest < ActionDispatch::IntegrationTest - # test "the truth" do - # assert true - # end -end diff --git a/test/controllers/meetings_controller_test.rb b/test/controllers/meetings_controller_test.rb deleted file mode 100644 index 3591851d..00000000 --- a/test/controllers/meetings_controller_test.rb +++ /dev/null @@ -1,7 +0,0 @@ -require 'test_helper' - -class MeetingsControllerTest < ActionDispatch::IntegrationTest - # test "the truth" do - # assert true - # end -end diff --git a/test/controllers/rooms_controller_test.rb b/test/controllers/rooms_controller_test.rb deleted file mode 100644 index b12a8836..00000000 --- a/test/controllers/rooms_controller_test.rb +++ /dev/null @@ -1,32 +0,0 @@ -require 'test_helper' - -class RoomsControllerTest < ActionDispatch::IntegrationTest - - def setup - @steve = users(:steve) - @mark = users(:mark) - - @kitchen = rooms(:kitchen) - @garage = rooms(:garage) - end - - test 'should redirect to root if not logged in.' do - get room_path(@kitchen.uid) - - assert_redirected_to root_path - end - - test 'should redirect to correct room if incorrect room.' do - post create_session_path, params: {session: {email: @mark.email, password: "mark12345"}} - get room_path(@kitchen.uid) - - assert_redirected_to room_path(@garage.uid) - end - - test 'should render room if user is owner.' do - post create_session_path, params: {session: {email: @steve.email, password: "steve12345"}} - get room_path(@kitchen.uid) - - assert_response :success - end -end diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb deleted file mode 100644 index 2d32b767..00000000 --- a/test/controllers/sessions_controller_test.rb +++ /dev/null @@ -1,70 +0,0 @@ -require 'test_helper' - -class SessionsControllerTest < ActionDispatch::IntegrationTest - - def setup - @steve = users(:steve) - @kitchen = rooms(:kitchen) - - @steve.room = @kitchen - end - - test 'can signin with greenlight account.' do - post create_session_path, params: {session: {email: @steve.email, password: "steve12345"}} - - assert_redirected_to room_path(@steve.room.uid) - assert @steve.id, session[:user_id] - end - - test 'can signup/login with omniauth.' do - email = "omniauth@test.com" - uid = "123456789" - - OmniAuth.config.add_mock(:twitter, { - provider: "twitter", - uid: uid, - info: { - email: email, - name: "Omni User", - nickname: "username" - } - }) - - #get "/auth/twitter" - - request.env['omniauth.auth'] = OmniAuth.config.mock_auth[:twitter] - #get omniauth_session_path(provider: "twitter") - - user = User.find_by(email: email, uid: uid) - - assert_not_nil user - assert_redirected_to room_path(user.room.uid) - assert user.id, session[:user_id] - end - - test 'handles omniauth failure.' do - OmniAuth.config.on_failure = Proc.new do |env| - OmniAuth::FailureEndpoint.new(env).redirect_to_failure - end - - OmniAuth.config.mock_auth[:twitter] = :invalid_credentials - - get "/auth/twitter" - - request.env['omniauth.auth'] = OmniAuth.config.mock_auth[:twitter] - - assert_no_difference 'User.count' do - get omniauth_session_path(provider: "twitter") - end - - assert_redirected_to auth_failure_path(message: "invalid_credentials", strategy: "twitter") - end - - test 'can logout.' do - post create_session_path, params: {session: {email: @steve.email, password: "steve12345"}} - assert @steve.id, session[:user_id] - - get logout_path - assert_not_equal @steve.id, session[:user_id] - end -end diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb deleted file mode 100644 index 17e36be6..00000000 --- a/test/controllers/users_controller_test.rb +++ /dev/null @@ -1,22 +0,0 @@ -require 'test_helper' - -class UsersControllerTest < ActionDispatch::IntegrationTest - - test 'can signup for greenlight account.' do - post signup_path, params: { - user: { - name: "Greenlight User", - username: "greenlight_user", - email: "greenlight@example.com", - password: "password", - password_confirmation: "password" - } - } - - user = User.find_by(email: "greenlight@example.com") - - assert_not_nil user - assert_redirected_to room_path(user.room.uid) - assert user.id, session[:user_id] - end -end diff --git a/test/fixtures/.keep b/test/fixtures/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/test/fixtures/files/.keep b/test/fixtures/files/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/test/fixtures/meetings.yml b/test/fixtures/meetings.yml deleted file mode 100644 index da376923..00000000 --- a/test/fixtures/meetings.yml +++ /dev/null @@ -1,9 +0,0 @@ -# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html - -# This model initially had no columns defined. If you add columns to the -# model remove the '{}' from the fixture names and add the columns immediately -# below each fixture, per the syntax in the comments below -# - -breakfast: - name: "Breakfast" \ No newline at end of file diff --git a/test/fixtures/rooms.yml b/test/fixtures/rooms.yml deleted file mode 100644 index 66b251cd..00000000 --- a/test/fixtures/rooms.yml +++ /dev/null @@ -1,14 +0,0 @@ -# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html - -# This model initially had no columns defined. If you add columns to the -# model remove the '{}' from the fixture names and add the columns immediately -# below each fixture, per the syntax in the comments below -# - -kitchen: - user: steve - uid: "13579" - -garage: - user: mark - uid: "02468" \ No newline at end of file diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml deleted file mode 100644 index a529e736..00000000 --- a/test/fixtures/users.yml +++ /dev/null @@ -1,20 +0,0 @@ -# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html - -# This model initially had no columns defined. If you add columns to the -# model remove the '{}' from the fixture names and add the columns immediately -# below each fixture, per the syntax in the comments below -# - -steve: - name: "Steve User" - username: "steve" - provider: "greenlight" - email: "steve@example.com" - password_digest: <%= BCrypt::Password.create('steve12345') %> - -mark: - name: "Mark User" - username: "mark" - provider: "greenlight" - email: "mark@example.com" - password_digest: <%= BCrypt::Password.create('mark12345') %> diff --git a/test/helpers/.keep b/test/helpers/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/test/integration/.keep b/test/integration/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/test/mailers/.keep b/test/mailers/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/test/models/.keep b/test/models/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/test/models/meeting_test.rb b/test/models/meeting_test.rb deleted file mode 100644 index 2d49828d..00000000 --- a/test/models/meeting_test.rb +++ /dev/null @@ -1,23 +0,0 @@ -require 'test_helper' - -class MeetingTest < ActiveSupport::TestCase - - def setup - @steve = users(:steve) - - @kitchen = rooms(:kitchen) - - @breakfast = meetings(:breakfast) - @breakfast.room = @kitchen - end - - test "name should be present." do - @breakfast.name = nil - assert_not @breakfast.valid? - end - - test "should set uid on creation." do - @breakfast.send(:generate_meeting_id) - assert @breakfast.uid - end -end diff --git a/test/models/room_test.rb b/test/models/room_test.rb deleted file mode 100644 index 0769db6f..00000000 --- a/test/models/room_test.rb +++ /dev/null @@ -1,20 +0,0 @@ -require 'test_helper' - -class RoomTest < ActiveSupport::TestCase - - def setup - @steve = users(:steve) - @mark = users(:mark) - - @kitchen = rooms(:kitchen) - @kitchen.user = @steve - end - - test "#owned_by? should identify correct owner." do - assert @kitchen.owned_by?(@steve) - end - - test "#owned_by? should identify incorrect owner." do - assert_not @kitchen.owned_by?(@mark) - end -end diff --git a/test/models/user_test.rb b/test/models/user_test.rb deleted file mode 100644 index 04b0669d..00000000 --- a/test/models/user_test.rb +++ /dev/null @@ -1,118 +0,0 @@ -require 'test_helper' - -class UserTest < ActiveSupport::TestCase - - def setup - @steve = users(:steve) - end - - test "should be valid." do - assert @steve.valid? - end - - test "name should be present." do - @steve.name = nil - assert_not @steve.valid? - end - - test "should allow nil email." do - @steve.email = nil - assert @steve.valid? - end - - test "username should be present." do - @steve.username = nil - assert_not @steve.valid? - end - - test "provider should be present." do - @steve.provider = nil - assert_not @steve.valid? - end - - test "should allow nil uid." do - @steve.uid = nil - assert @steve.valid? - end - - test "should allow nil password." do - @steve.password = @steve.password_confirmation = nil - assert @steve.valid? - end - - test "password should be longer than 6 characters if it exists." do - @steve.password = "short" - assert_not @steve.valid? - end - - test "should create user from omniauth" do - auth = { - "uid" => "123456789", - "provider" => "twitter", - "info" => { - "name" => "Test Name", - "nickname" => "username", - "email" => "test@example.com" - } - } - - assert_difference 'User.count' do - User.from_omniauth(auth) - end - - user = User.find_by(uid: auth["uid"], provider: auth["provider"]) - - assert user.username, auth["info"]["nickname"] - assert user.name, auth["info"]["name"] - end - - test "email addresses should be saved as lower-case." do - mixed_case = "ExAmPlE@eXaMpLe.CoM" - @steve.email = mixed_case - @steve.save - assert_equal mixed_case.downcase, @steve.email - end - - test "email validation should reject invalid addresses." do - invalid_addresses = %w[user@example,com user_at_foo.org user.name@example. foo@bar_baz.com foo@bar+baz.com] - invalid_addresses.each do |invalid_address| - @steve.email = invalid_address - assert_not @steve.valid?, "#{invalid_address.inspect} should be invalid." - end - end - - test "email should be unique." do - duplicate_user = @steve.dup - duplicate_user.email = @steve.email.upcase - @steve.save - assert_not duplicate_user.valid? - end - - test "name should not be too long." do - @steve.name = "a" * 25 - assert_not @steve.valid? - end - - test "email should not be too long." do - @steve.email = "a" * 50 + "@example.com" - assert_not @steve.valid? - end - - test "password should have a minimum length." do - @steve.password = @steve.password_confirmation = "a" * 5 - assert_not @steve.valid? - end - - test "should authenticate on valid password." do - assert @steve.authenticate("steve12345") - end - - test "should not authenticate on invalid password." do - assert_not @steve.authenticate('incorrect') - end - - test "#initialize_room should create room." do - @steve.send(:initialize_room) - assert @steve.room - end -end diff --git a/test/test_helper.rb b/test/test_helper.rb deleted file mode 100644 index 344a2be8..00000000 --- a/test/test_helper.rb +++ /dev/null @@ -1,10 +0,0 @@ -ENV['RAILS_ENV'] ||= 'test' -require File.expand_path('../../config/environment', __FILE__) -require 'rails/test_help' - -class ActiveSupport::TestCase - # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. - fixtures :all - - OmniAuth.config.test_mode = true -end \ No newline at end of file