| Merge pull request #31 from zeknox/test_suite - warvox - VoIP based wardialing … | |
| Log | |
| Files | |
| Refs | |
| README | |
| --- | |
| commit f4e3eb1b43a45ddf1c7999e48563234d8144f57a | |
| parent 60e7d18680788318e47abd21ada018d913f20eb7 | |
| Author: HD Moore <[email protected]> | |
| Date: Sat, 24 Oct 2015 10:39:01 -0500 | |
| Merge pull request #31 from zeknox/test_suite | |
| Added Initial Feature Tests for Login Page | |
| Diffstat: | |
| M app/controllers/application_contro… | 2 +- | |
| M app/views/projects/index.html.erb | 72 ++++++++++++++---------------… | |
| M spec/factories/jobs.rb | 2 +- | |
| A spec/features/projects_spec.rb | 25 +++++++++++++++++++++++++ | |
| A spec/features/visitor/logins_spec.… | 58 +++++++++++++++++++++++++++… | |
| M spec/rails_helper.rb | 46 ++++++++++++++++-------------… | |
| A spec/support/auth_logic_helpers.rb | 21 +++++++++++++++++++++ | |
| 7 files changed, 162 insertions(+), 64 deletions(-) | |
| --- | |
| diff --git a/app/controllers/application_controller.rb b/app/controllers/applic… | |
| @@ -23,7 +23,7 @@ private | |
| def require_user | |
| unless current_user | |
| store_location | |
| - flash[:notice] = "You must be logged in to access this… | |
| + flash.now[:notice] = "You must be logged in to access … | |
| redirect_to '/login' | |
| return false | |
| end | |
| diff --git a/app/views/projects/index.html.erb b/app/views/projects/index.html.… | |
| @@ -1,46 +1,40 @@ | |
| -<% if @projects.length > 0 %> | |
| <h1 class='title'>WarVOX Projects</h1> | |
| +<p> | |
| + <a class="btn" href="<%= new_project_path %>"> | |
| + <i class="fa fa-plus"></i> Create Project | |
| + </a> | |
| +</p> | |
| <%= will_paginate @projects, :renderer => BootstrapPagination::Rails %> | |
| -<table class='table table-striped ' width='90%'> | |
| - <thead> | |
| - <tr> | |
| - <th>Name</th> | |
| - <th>Description</th> | |
| - <th>Jobs</th> | |
| - <th>Calls</th> | |
| - <th>Analyzed</th> | |
| - <th>Created</th> | |
| - <th>Actions</th> | |
| - </tr> | |
| - </thead> | |
| - <tbody> | |
| - | |
| -<% @projects.each do |project| %> | |
| - <tr> | |
| - <td><%= link_to( h(project.name), project_path(project)) %></td> | |
| - <td><%=truncate(project.description, :length => 40, :separator => '') %></… | |
| - <td><%= number_with_delimiter(project.jobs.count) %></td> | |
| - <td><%= number_with_delimiter(project.calls.count) %></td> | |
| - <td><%= number_with_delimiter(project.calls.where('analysis_completed_at I… | |
| - <td><%= time_ago_in_words(project.created_at) %> ago</td> | |
| - <td> | |
| - <a class="btn" href="<%= edit_project_path(project) %>"rel="tool… | |
| - <a class="btn" href="<%= project_path(project) %>" data-confirm="D… | |
| - </td> | |
| - </tr> | |
| - | |
| -<% end %> | |
| -</tbody> | |
| +<table id='projects-table' class='table table-striped' width='90%'> | |
| + <thead> | |
| + <tr> | |
| + <th>Name</th> | |
| + <th>Description</th> | |
| + <th>Jobs</th> | |
| + <th>Calls</th> | |
| + <th>Analyzed</th> | |
| + <th>Created</th> | |
| + <th>Actions</th> | |
| + </tr> | |
| + </thead> | |
| + <tbody> | |
| + <% @projects.each do |project| %> | |
| + <tr> | |
| + <td><%= link_to( h(project.name), project_path… | |
| + <td><%=truncate(project.description, :length =… | |
| + <td><%= number_with_delimiter(project.jobs.cou… | |
| + <td><%= number_with_delimiter(project.calls.co… | |
| + <td><%= number_with_delimiter(project.calls.wh… | |
| + <td><%= time_ago_in_words(project.created_at) … | |
| + <td> | |
| + <a class="btn" href="<%= edit_project_… | |
| + <a class="btn" href="<%= project_path(… | |
| + </td> | |
| + </tr> | |
| + <% end %> | |
| + </tbody> | |
| </table> | |
| <%= will_paginate @projects, :renderer => BootstrapPagination::Rails %> | |
| -<% else %> | |
| - | |
| -<h1 class='title'>No Projects</h1> | |
| -<br/> | |
| - | |
| -<% end %> | |
| - | |
| -<a class="btn" href="<%= new_project_path %>"><i class="fa fa-plus"></i> Creat… | |
| diff --git a/spec/factories/jobs.rb b/spec/factories/jobs.rb | |
| @@ -27,7 +27,7 @@ FactoryGirl.define do | |
| error nil | |
| range { Faker::PhoneNumber.phone_number } | |
| cid_mask { Faker::PhoneNumber.phone_number } | |
| - seconds { Faker::Number.between(1, 300) } | |
| + seconds { Faker::Number.between(1, 299) } | |
| lines { Faker::Number.between(1, 10000) } | |
| end | |
| diff --git a/spec/features/projects_spec.rb b/spec/features/projects_spec.rb | |
| @@ -0,0 +1,25 @@ | |
| +require 'rails_helper' | |
| + | |
| +RSpec.feature "Projects", type: :feature do | |
| + | |
| + before(:each) do | |
| + @user = create(:user) | |
| + create_user_session(@user) | |
| + end | |
| + | |
| + it "list all existing projects" do | |
| + project = create(:project) | |
| + visit projects_path | |
| + expect(page).to have_content "WarVOX Projects" | |
| + within "#projects-table" do | |
| + expect(page).to have_content "Name" | |
| + expect(page).to have_content "Description" | |
| + expect(page).to have_content "Jobs" | |
| + expect(page).to have_content "Calls" | |
| + expect(page).to have_content "Analyzed" | |
| + expect(page).to have_content "Created" | |
| + expect(page).to have_content "Actions" | |
| + expect(page).to have_content project.name | |
| + end | |
| + end | |
| +end | |
| diff --git a/spec/features/visitor/logins_spec.rb b/spec/features/visitor/login… | |
| @@ -0,0 +1,58 @@ | |
| +require 'rails_helper' | |
| + | |
| +RSpec.feature "Logins", type: :feature do | |
| + it "login with valid credentials" do | |
| + user = create(:user) | |
| + visit login_path | |
| + within "#new_user_session" do | |
| + expect(page).to have_content "Username" | |
| + expect(page).to have_content "Password" | |
| + fill_in "user_session_login", with: user.login | |
| + fill_in "user_session_password", with: 'RandomPass' | |
| + click_button "Sign in" | |
| + end | |
| + within "div.content" do | |
| + expect(page).to have_content "WarVOX Projects" | |
| + end | |
| + end | |
| + | |
| + it "failed login with invalid password valid username" do | |
| + user = create(:user) | |
| + visit login_path | |
| + within "#new_user_session" do | |
| + fill_in "user_session_login", with: user.login | |
| + fill_in "user_session_password", with: 'WrongPassword' | |
| + click_button "Sign in" | |
| + end | |
| + expect(page).to have_content "Password is not valid" | |
| + end | |
| + | |
| + it "failed login with invalid username valid password" do | |
| + user = create(:user) | |
| + visit login_path | |
| + within "#new_user_session" do | |
| + fill_in "user_session_login", with: user.login + "Wron… | |
| + fill_in "user_session_password", with: 'RandomPass' | |
| + click_button "Sign in" | |
| + end | |
| + expect(page).to have_content "Login is not valid" | |
| + end | |
| + | |
| + it "failed login with no input entered" do | |
| + visit login_path | |
| + within "#new_user_session" do | |
| + click_button "Sign in" | |
| + end | |
| + expect(page).to have_content "You did not provide any details … | |
| + end | |
| + | |
| + it "failed login with no password entered" do | |
| + user = create(:user) | |
| + visit login_path | |
| + within "#new_user_session" do | |
| + fill_in "user_session_login", with: user.login | |
| + click_button "Sign in" | |
| + end | |
| + expect(page).to have_content "Password cannot be blank" | |
| + end | |
| +end | |
| diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb | |
| @@ -20,36 +20,36 @@ 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 before tests are run. | |
| # If you are not using ActiveRecord, you can remove this line. | |
| ActiveRecord::Migration.maintain_test_schema! | |
| RSpec.configure do |config| | |
| - # FactoryGirl Syntax | |
| - config.include FactoryGirl::Syntax::Methods | |
| + # FactoryGirl Syntax | |
| + config.include FactoryGirl::Syntax::Methods | |
| - # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures | |
| - config.fixture_path = "#{::Rails.root}/spec/fixtures" | |
| + # Remove this line if you're not using ActiveRecord or ActiveRecord fi… | |
| + config.fixture_path = "#{::Rails.root}/spec/fixtures" | |
| - # If you're not using ActiveRecord, or you'd prefer not to run each of your | |
| - # examples within a transaction, remove the following line or assign false | |
| - # instead of true. | |
| - config.use_transactional_fixtures = true | |
| + # If you're not using ActiveRecord, or you'd prefer not to run each of… | |
| + # examples within a transaction, remove the following line or assign f… | |
| + # instead of true. | |
| + config.use_transactional_fixtures = true | |
| - # RSpec Rails can automatically mix in different behaviours to your tests | |
| - # based on their file location, for example enabling you to call `get` and | |
| - # `post` in specs under `spec/controllers`. | |
| - # | |
| - # You can disable this behaviour by removing the line below, and instead | |
| - # explicitly tag your specs with their type, e.g.: | |
| - # | |
| - # RSpec.describe UsersController, :type => :controller do | |
| - # # ... | |
| - # end | |
| - # | |
| - # The different available types are documented in the features, such as in | |
| - # https://relishapp.com/rspec/rspec-rails/docs | |
| - config.infer_spec_type_from_file_location! | |
| + # RSpec Rails can automatically mix in different behaviours to your te… | |
| + # based on their file location, for example enabling you to call `get`… | |
| + # `post` in specs under `spec/controllers`. | |
| + # | |
| + # You can disable this behaviour by removing the line below, and inste… | |
| + # explicitly tag your specs with their type, e.g.: | |
| + # | |
| + # RSpec.describe UsersController, :type => :controller do | |
| + # # ... | |
| + # end | |
| + # | |
| + # The different available types are documented in the features, such a… | |
| + # https://relishapp.com/rspec/rspec-rails/docs | |
| + config.infer_spec_type_from_file_location! | |
| end | |
| diff --git a/spec/support/auth_logic_helpers.rb b/spec/support/auth_logic_helpe… | |
| @@ -0,0 +1,20 @@ | |
| +module Authlogic | |
| + module TestHelper | |
| + def create_user_session(user) | |
| + visit login_path | |
| + within "#new_user_session" do | |
| + expect(page).to have_content "Username" | |
| + expect(page).to have_content "Password" | |
| + fill_in "user_session_login", with: user.login | |
| + fill_in "user_session_password", with: user.pa… | |
| + click_button "Sign in" | |
| + end | |
| + end | |
| + end | |
| +end | |
| + | |
| +# Make this available to just the request and feature specs | |
| +RSpec.configure do |config| | |
| + config.include Authlogic::TestHelper, type: :request | |
| + config.include Authlogic::TestHelper, type: :feature | |
| +end | |
| +\ No newline at end of file |