sessions_controller_spec.rb
require 'rails_helper'
RSpec.describe DeviseTokenAuth::SessionsController, type: :controller do
before do
@request.env["devise.mapping"] = Devise.mappings[:user]
end
describe "POST #create" do
context "when input invalid credentials" do
it "should not login" do
post :create, params: {
email: 'invalid_user@yopmail.com',
password: 'invalid_password'
}
expect(response.status).to eq(401)
expect(subject.current_user).to be_nil
end
end
context "when input valid credentials" do
let(:valid_email) { 'valid_user@yopmail.com' }
let(:valid_password) { 'password' }
let!(:user) { create(:user, :with_role, email: valid_email, password: valid_password, role_name: 'aba_admin') }
it "should login successfully" do
post :create, params: {
email: valid_email,
password: valid_password
}
expect(response).to have_http_status :ok
expect(subject.current_user.id).to eq(user.id)
end
end
end
describe "DELETE #destroy" do
let!(:user) { create(:user, :with_role, role_name: 'aba_admin') }
let!(:auth_headers) { user.create_new_auth_token }
context "when sign out" do
it "should logout successfully" do
set_auth_headers(auth_headers)
delete :destroy
response_body = JSON.parse(response.body)
expect(response.status).to eq(200)
expect(response_body['success']).to eq(true)
end
it "should not logout" do
delete :destroy
response_body = JSON.parse(response.body)
expect(response.status).to eq(404)
expect(response_body['success']).to eq(false)
expect(response_body['errors']).to include('User was not found or was not logged in.')
end
end
end
end
registrations_controller_spec.rb
# require 'swagger_helper'
require 'rails_helper'
RSpec.describe DeviseTokenAuth::RegistrationsController, type: :controller do
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
@email = "testuser1@yopmail.com"
end
describe "POST #create" do
context "when input valid values" do
let(:password) { 'Abcd@123' }
it "should create a user" do
post :create, params: {
email: @email,
password: password,
confirm_password: password
}
user = JSON.parse(response.body)
expect(response).to have_http_status :ok
expect(user["data"]["email"]).to eq(@email)
end
end
context "when input invalid values" do
it "should fail for invalid email" do
post :create, params: {
email: 'user'
}
response_body = JSON.parse(response.body)
expect(response.status).to eq(422)
expect(response_body["errors"]["email"]).to include("is not an email")
end
it "should fail for invalid password" do
post :create, params: {
email: @email
}
response_body = JSON.parse(response.body)
expect(response.status).to eq(422)
expect(response_body["errors"]["password"]).to include("can't be blank")
end
end
end
end
passwords_controller_spec.rb
require 'rails_helper'
RSpec.describe DeviseTokenAuth::PasswordsController, type: :controller do
before do
@request.env["devise.mapping"] = Devise.mappings[:user]
end
describe "POST #create" do
let(:valid_email) { 'valid_user@yopmail.com' }
let(:valid_password) { 'Abcd@123' }
let!(:user) { create(:user, :with_role, email: valid_email, password: valid_password, role_name: 'aba_admin') }
context "when input invalid email" do
it "should raise error" do
post :create, params: {
email: 'invalid_user@yopmail.com',
redirect_url: '/'
}
expect(response.status).to eq(404)
expect(user.reload.reset_password_token).not_to be_present
end
end
context "when redirect url is missing" do
it "should raise error" do
post :create, params: {
email: valid_email
}
expect(response.status).to eq(401)
expect(user.reload.reset_password_token).not_to be_present
end
end
context "when input valid email" do
it "should login successfully" do
post :create, params: {
email: valid_email,
redirect_url: '/'
}
expect(response).to have_http_status :ok
expect(user.reload.reset_password_token).to be_present
end
end
end
end
Comments
Post a Comment