completing test coverage

This commit is contained in:
Mark Moser 2016-09-18 11:16:35 -05:00
parent 12332cc6bf
commit 4d89a5ecc3
7 changed files with 88 additions and 66 deletions

View File

@ -70,12 +70,12 @@ guard :minitest, spring: "bin/rails test", all_after_pass: true do
end
# ESLint
guard :shell, all_on_start: true do
watch %r{app/assets/javascripts/*/.*} do |file|
system %(echo "ESLint:\033[32m #{file[0]}\033[0m")
system %(eslint #{file[0]})
end
end
# guard :shell, all_on_start: true do
# watch %r{app/assets/javascripts/*/.*} do |file|
# system %(echo "ESLint:\033[32m #{file[0]}\033[0m")
# system %(eslint #{file[0]})
# end
# end
guard :rubocop, cli: %w(-D -S) do
watch(/.+\.rb$/)

View File

@ -2,23 +2,17 @@
class AccountsController < ApplicationController
before_action :set_account, only: [:show, :edit, :reveal, :update, :destroy]
# GET /accounts
# GET /accounts.json
def index
@accounts = Account.all
end
# GET /accounts/1
# GET /accounts/1.json
def show
end
# GET /accounts/new
def new
@account = Account.new
end
# GET /accounts/1/edit
def edit
end
@ -26,54 +20,37 @@ class AccountsController < ApplicationController
render json: { hash: @account.password }.to_json
end
# POST /accounts
# POST /accounts.json
def create
@account = Account.new(account_params)
respond_to do |format|
if @account.save
format.html { redirect_to @account, notice: 'Account was successfully created.' }
format.json { render :show, status: :created, location: @account }
else
format.html { render :new }
format.json { render json: @account.errors, status: :unprocessable_entity }
end
if @account.save
redirect_to @account, notice: 'Account was successfully created.'
else
flash[:error] = 'Failed to create account'
render :new
end
end
# PATCH/PUT /accounts/1
# PATCH/PUT /accounts/1.json
def update
respond_to do |format|
if @account.update(account_params)
format.html { redirect_to @account, notice: 'Account was successfully updated.' }
format.json { render :show, status: :ok, location: @account }
else
format.html { render :edit }
format.json { render json: @account.errors, status: :unprocessable_entity }
end
if @account.update(account_params)
redirect_to @account, notice: 'Account was successfully updated.'
else
flash[:error] = 'Failed to update account'
render :edit
end
end
# DELETE /accounts/1
# DELETE /accounts/1.json
def destroy
@account.destroy
respond_to do |format|
format.html { redirect_to accounts_url, notice: 'Account was successfully destroyed.' }
format.json { head :no_content }
end
redirect_to accounts_url, notice: 'Account was successfully destroyed.'
end
private
# Use callbacks to share common setup or constraints between actions.
def set_account
@account = Account.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def account_params
params.require(:account).permit(:username, :password, :home, :site)
end

View File

@ -10,6 +10,7 @@ class AuthController < ApplicationController
redirect_to login_path
end
# :nocov:
def auth
redirect_to client.auth_code.authorize_url(redirect_uri: ENV['callback_url'])
end

View File

@ -1,4 +1,9 @@
# frozen_string_literal: true
class Account < ApplicationRecord
serialize :password, CryptSerializer
validates :username, presence: true
validates :password, presence: true
validates :home, presence: true
validates :site, presence: true
end

View File

@ -9,17 +9,6 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
@account = accounts(:account1)
end
test "should get index" do
get accounts_url
assert_response :success
end
test "should get new" do
get new_account_url
assert_response :success
end
test "should create account" do
assert_difference('Account.count') do
post accounts_url, params: { account: {
@ -33,14 +22,16 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
assert_redirected_to account_url(Account.last)
end
test "should show account" do
get account_url(@account)
assert_response :success
end
test "should FAIL to create account" do
assert_difference('Account.count', 0) do
post accounts_url, params: { account: {
password: @account.password,
username: 'client-new'
} }
end
test "should get edit" do
get edit_account_url(@account)
assert_response :success
assert_match(/failed to create/i, flash[:error])
end
test "should update account" do
@ -53,6 +44,13 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
assert_redirected_to account_url(@account)
end
test "should FAIL to update account" do
patch account_url(@account.id), params: { account: { username: nil } }
assert_response :success
assert_match(/failed to update/i, flash[:error])
end
test "should destroy account" do
assert_difference('Account.count', -1) do
delete account_url(@account)
@ -60,12 +58,4 @@ class AccountsControllerTest < ActionDispatch::IntegrationTest
assert_redirected_to accounts_url
end
test 'reveal should provide password' do
get reveal_password_url(@account.to_i), xhr: true
json = JSON.parse(response.body).to_hash
assert_response :success
assert_match '1q2w3e4r5t6y7u', json['hash']
end
end

View File

@ -0,0 +1,40 @@
# frozen_string_literal: true
require 'test_helper'
class AccountsControllerTest < ActionDispatch::IntegrationTest
include TestAuthHelper
setup do
get auth_path
@account = accounts(:account1)
end
test "should get index" do
get accounts_url
assert_response :success
end
test "should get new" do
get new_account_url
assert_response :success
end
test "should show account" do
get account_url(@account)
assert_response :success
end
test "should get edit" do
get edit_account_url(@account)
assert_response :success
end
test 'reveal should provide password' do
get reveal_password_url(@account.to_i), xhr: true
json = JSON.parse(response.body).to_hash
assert_response :success
assert_match '1q2w3e4r5t6y7u', json['hash']
end
end

View File

@ -4,7 +4,7 @@ require 'test_helper'
class AuthControllerTest < ActionDispatch::IntegrationTest
include TestAuthHelper
test "should get auth" do
test "Should fake login process" do
# This is not a real test of AuthController!
# We are really testing that the monkey path is correct
#
@ -26,4 +26,13 @@ class AuthControllerTest < ActionDispatch::IntegrationTest
assert_equal "redirect_to accounts_path", last_line_in_callback
end
test 'should logout' do
get auth_path
assert session[:token]
get logout_path
assert session[:token].nil?
assert_redirected_to login_path
end
end