creates Manager

This commit is contained in:
Juanjo Bazán
2015-09-30 11:22:03 +02:00
committed by Juanjo Bazán
parent 39119b9d6b
commit b921c67676
5 changed files with 86 additions and 1 deletions

12
app/models/manager.rb Normal file
View File

@@ -0,0 +1,12 @@
class Manager < ActiveRecord::Base
validates :username, presence: true, uniqueness: true
validates :password_digest, presence: true
has_secure_password
def self.valid_auth?(username = nil, password = nil)
return false unless username.present? && password.present?
Manager.find_by(username: username).try(:authenticate, password).present?
end
end

View File

@@ -0,0 +1,12 @@
class CreateManagers < ActiveRecord::Migration
def change
create_table :managers do |t|
t.string :username, null: false
t.string :password_digest, null: false
t.timestamp :last_login_at
t.timestamps
end
add_index :managers, [:username]
end
end

View File

@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20150926115929) do
ActiveRecord::Schema.define(version: 20150930082311) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -168,6 +168,16 @@ ActiveRecord::Schema.define(version: 20150926115929) do
add_index "locks", ["user_id"], name: "index_locks_on_user_id", using: :btree
create_table "managers", force: :cascade do |t|
t.string "username", null: false
t.string "password_digest", null: false
t.datetime "last_login_at"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "managers", ["username"], name: "index_managers_on_username", using: :btree
create_table "moderators", force: :cascade do |t|
t.integer "user_id"
end

View File

@@ -218,6 +218,11 @@ FactoryGirl.define do
user
end
factory :manager do
sequence(:username) { |n| "manager#{n}" }
password 'supersecret'
end
factory :organization do
user
responsible_name "Johnny Utah"

View File

@@ -0,0 +1,46 @@
require 'rails_helper'
describe Manager do
describe "valid?" do
let(:manager) { create(:manager) }
it "is false when username is blank" do
manager.username = nil
expect(manager).to_not be_valid
end
it "is false when password is blank" do
manager.password_digest = nil
expect(manager).to_not be_valid
end
it "is true if username and password present" do
expect(manager).to be_valid
end
end
describe "self.valid_auth?" do
before(:all) { create(:manager, username: "Silvia" ,password: "supersecret") }
it "is false when username is blank" do
expect(Manager.valid_auth?(nil, "supersecret")).to be false
end
it "is false when password is blank" do
expect(Manager.valid_auth?("Silvia", nil)).to be false
end
it "is false if manager unexistent" do
expect(Manager.valid_auth?("Manager", "supersecret")).to be false
end
it "is false if wrong password unexistent" do
expect(Manager.valid_auth?("Silvia", "wrong")).to be false
end
it "is true if right username/password combination" do
expect(Manager.valid_auth?("Silvia", "supersecret")).to be true
end
end
end