Skip to content

Commit

Permalink
add versioning to app routes
Browse files Browse the repository at this point in the history
  • Loading branch information
juan-apa committed Jan 17, 2024
1 parent e3a749a commit d1d71b8
Show file tree
Hide file tree
Showing 16 changed files with 94 additions and 84 deletions.
9 changes: 0 additions & 9 deletions app/controllers/api/users/confirmations_controller.rb

This file was deleted.

10 changes: 0 additions & 10 deletions app/controllers/api/users/passwords_controller.rb

This file was deleted.

19 changes: 0 additions & 19 deletions app/controllers/api/users/registrations_controller.rb

This file was deleted.

29 changes: 0 additions & 29 deletions app/controllers/api/users/sessions_controller.rb

This file was deleted.

11 changes: 11 additions & 0 deletions app/controllers/api/v1/users/confirmations_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# frozen_string_literal: true

module Api
module V1
module Users
class ConfirmationsController < Devise::ConfirmationsController
respond_to :json
end
end
end
end
12 changes: 12 additions & 0 deletions app/controllers/api/v1/users/passwords_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# frozen_string_literal: true

module Api
module V1
module Users
class PasswordsController < Devise::PasswordsController
include FakeSession
respond_to :json
end
end
end
end
19 changes: 19 additions & 0 deletions app/controllers/api/v1/users/registrations_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# frozen_string_literal: true

module Api
module V1
module Users
class RegistrationsController < Devise::RegistrationsController
include FakeSession

def respond_with(resource, _opts = {})
if resource.persisted?
render json: UserSerializer.render(resource), status: :created
else
render json: resource.errors, status: :unprocessable_entity
end
end
end
end
end
end
31 changes: 31 additions & 0 deletions app/controllers/api/v1/users/sessions_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# frozen_string_literal: true

module Api
module V1
module Users
class SessionsController < Devise::SessionsController
def create
super do |user|
render json: UserSerializer.render(user), status: :created

return
end
end

private

def respond_to_on_destroy
current_user ? log_out_success : log_out_failure
end

def log_out_success
head :no_content
end

def log_out_failure
render json: { error: 'You need to sign in or sign up before continuing.' }, status: :unauthorized
end
end
end
end
end
22 changes: 13 additions & 9 deletions config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,15 +1,6 @@
# frozen_string_literal: true

Rails.application.routes.draw do
scope module: 'api', defaults: { format: :json } do
devise_for :users, controllers: {
confirmations: 'api/users/confirmations',
sessions: 'api/users/sessions',
registrations: 'api/users/registrations',
passwords: 'api/users/passwords'
}
end

get '/healthcheck', to: ->(_env) { [200, {}, ['OK']] }

defaults format: :html do
Expand All @@ -22,4 +13,17 @@
# }
# root to: '/admin'
end

devise_for :users, path: 'api/v1/users', defaults: { format: :json }, controllers: {
confirmations: 'api/v1/users/confirmations',
sessions: 'api/v1/users/sessions',
registrations: 'api/v1/users/registrations',
passwords: 'api/v1/users/passwords'
}

namespace :api, defaults: { format: :json } do
namespace :v1 do
# Your api routes go here
end
end
end
2 changes: 1 addition & 1 deletion spec/requests/users/confirmations/create_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

require 'rails_helper'

RSpec.describe 'POST /api/users/confirmations', type: :request do
RSpec.describe 'POST /api/v1/users/confirmations', type: :request do
let(:user) { create(:user, :unconfirmed) }
let(:email) { user.email }
let(:params) do
Expand Down
2 changes: 1 addition & 1 deletion spec/requests/users/confirmations/show_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

require 'rails_helper'

RSpec.describe 'GET /api/users/confirmation?confirmation_token', type: :request do
RSpec.describe 'GET /api/v1/users/confirmation?confirmation_token', type: :request do
let(:user) { create(:user, :unconfirmed) }
let(:confirmation_token) { user.confirmation_token }

Expand Down
2 changes: 1 addition & 1 deletion spec/requests/users/passwords/create_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

require 'rails_helper'

RSpec.describe 'POST /users/password', type: :request do
RSpec.describe 'POST /api/v1/users/password', type: :request do
let(:user) { create(:user) }
let(:email) { user.email }
let(:params) do
Expand Down
2 changes: 1 addition & 1 deletion spec/requests/users/passwords/update_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

require 'rails_helper'

RSpec.describe 'PUT /users/password?reset_password_token', type: :request do
RSpec.describe 'PUT /api/v1/users/password?reset_password_token', type: :request do
let(:user) { create(:user) }
let(:reset_password_token) { user.send(:set_reset_password_token) }
let(:password) { 'new_password' }
Expand Down
2 changes: 1 addition & 1 deletion spec/requests/users/registrations/create_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

require 'rails_helper'

RSpec.describe 'POST /api/users', type: :request do
RSpec.describe 'POST /api/v1/users', type: :request do
let(:user) { build(:user) }
let(:email) { user.email }
let(:password) { user.password }
Expand Down
2 changes: 1 addition & 1 deletion spec/requests/users/sessions/create_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

require 'rails_helper'

RSpec.describe 'POST /api/users/sign_in', type: :request do
RSpec.describe 'POST /api/v1/users/sign_in', type: :request do
let(:user) { create(:user) }
let(:email) { user.email }
let(:password) { user.password }
Expand Down
4 changes: 2 additions & 2 deletions spec/requests/users/sessions/destroy_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

require 'rails_helper'

RSpec.describe 'DELETE /api/users/sign_out', type: :request do
RSpec.describe 'DELETE /api/v1/users/sign_out', type: :request do
let(:user) { create(:user) }
let(:headers) do
{
'Authorization' => get_jwt(user)
}
end

subject { delete destroy_user_session_path, headers: }
subject { delete destroy_user_session_path, headers:, as: :json }

context 'when the user is signed in' do
it 'returns a successful response' do
Expand Down

0 comments on commit d1d71b8

Please sign in to comment.