mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 09:41:40 -05:00
70 lines
1.8 KiB
Ruby
70 lines
1.8 KiB
Ruby
|
|
# frozen_string_literal: true
|
||
|
|
|
||
|
|
require 'rails_helper'
|
||
|
|
|
||
|
|
RSpec.describe 'Authentication', type: :request do
|
||
|
|
let(:user) { create(:user, password: 'password123') }
|
||
|
|
|
||
|
|
before do
|
||
|
|
stub_request(:get, "https://api.github.com/repos/Freika/dawarich/tags")
|
||
|
|
.with(headers: { 'Accept'=>'*/*', 'Accept-Encoding'=>/.*/,
|
||
|
|
'Host'=>'api.github.com', 'User-Agent'=>/.*/})
|
||
|
|
.to_return(status: 200, body: '[{"name": "1.0.0"}]', headers: {})
|
||
|
|
end
|
||
|
|
|
||
|
|
describe 'Route Protection' do
|
||
|
|
it 'redirects to sign in page when accessing protected routes while signed out' do
|
||
|
|
get map_path
|
||
|
|
expect(response).to redirect_to(new_user_session_path)
|
||
|
|
end
|
||
|
|
|
||
|
|
it 'allows access to protected routes when signed in' do
|
||
|
|
sign_in user
|
||
|
|
get map_path
|
||
|
|
expect(response).to be_successful
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
describe 'Account Management' do
|
||
|
|
it 'prevents account update without current password' do
|
||
|
|
sign_in user
|
||
|
|
|
||
|
|
put user_registration_path, params: {
|
||
|
|
user: {
|
||
|
|
email: 'updated@example.com',
|
||
|
|
current_password: ''
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
expect(response).not_to be_successful
|
||
|
|
expect(user.reload.email).not_to eq('updated@example.com')
|
||
|
|
end
|
||
|
|
|
||
|
|
it 'allows account update with current password' do
|
||
|
|
sign_in user
|
||
|
|
|
||
|
|
put user_registration_path, params: {
|
||
|
|
user: {
|
||
|
|
email: 'updated@example.com',
|
||
|
|
current_password: 'password123'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
expect(response).to redirect_to(root_path)
|
||
|
|
expect(user.reload.email).to eq('updated@example.com')
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
describe 'Session Security' do
|
||
|
|
it 'requires authentication after sign out' do
|
||
|
|
sign_in user
|
||
|
|
get map_path
|
||
|
|
expect(response).to be_successful
|
||
|
|
|
||
|
|
sign_out user
|
||
|
|
get map_path
|
||
|
|
expect(response).to redirect_to(new_user_session_path)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|