Skip to content

Commit acf4261

Browse files
committed
Update Test suite to handle admin priviledges
1 parent 6167470 commit acf4261

File tree

5 files changed

+32
-4
lines changed

5 files changed

+32
-4
lines changed

app/controllers/authentication_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
class AuthenticationController < ApplicationController
22
# return auth token once user is authenticated
33
skip_before_action :authorize_request, only: :authenticate
4+
skip_before_action :admin?
45

56
def authenticate
67
auth_token =

app/controllers/users_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
class UsersController < ApplicationController
22
skip_before_action :authorize_request, only: :create
3+
skip_before_action :admin?
34

45
# POST /signup
56
# return authenticated token upon signup

app/controllers/v1/measurements_controller.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module V1
22
class MeasurementsController < ApplicationController
33
before_action :set_measure
44
before_action :set_measure_item, only: %i[show update destroy]
5+
skip_before_action :admin?
56

67
# GET /measures/:measure_id/measurements
78
def index

spec/requests/measures_request_spec.rb

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
RSpec.describe 'Measures', type: :request do
44
# initialize test data
55
let(:user) { create(:user) }
6+
let(:admin) { create(:user, admin: true) }
67
let!(:measures) { create_list(:measure, 10, user_id: user.id) }
78
let(:measure_id) { measures.first.id }
89

10+
11+
912
# authorize_request
10-
let(:headers) { valid_headers }
13+
let(:headers) { valid_headers(user.id) }
1114

1215
# Test suite for GET /measures
1316
describe 'GET /measures' do
@@ -62,11 +65,27 @@
6265
{body_part_name: 'Thighs' }.to_json
6366
end
6467

68+
69+
context 'when non-admin users try to access this endpoint' do
70+
before { post '/measures', params: valid_attributes, headers: valid_headers(user.id) }
71+
72+
it 'return unauthorized request' do
73+
expect(response.body).to match("{\"message\":\"Unauthorized request\"}")
74+
end
75+
76+
it 'returns status code 201' do
77+
expect(response).to have_http_status(422)
78+
end
79+
end
80+
81+
82+
let(:headers) { valid_headers(admin.id) }
83+
6584
context 'when the request is valid' do
6685
before { post '/measures', params: valid_attributes, headers: headers }
6786

6887
it 'creates a todo' do
69-
expect(json['user_id']).to eq(user.id)
88+
expect(json['user_id']).to eq(admin.id)
7089
end
7190

7291
it 'returns status code 201' do
@@ -76,6 +95,7 @@
7695

7796
context 'when the request is invalid' do
7897
let(:invalid_attributes) { { }.to_json }
98+
7999
before { post '/measures', params: invalid_attributes, headers: headers }
80100

81101
it 'returns status code 422' do
@@ -91,6 +111,7 @@
91111

92112
# Test suite for DELETE /measures/:id
93113
describe 'DELETE /measures/:id' do
114+
let(:headers) { valid_headers(admin.id) }
94115
before { delete "/measures/#{measure_id}", params: {}, headers: headers }
95116

96117
it 'returns status code 204' do

spec/support/controller_spec_helper.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,17 @@ def expired_token_generator(user_id)
1010
end
1111

1212
# return valid headers
13-
def valid_headers
13+
def valid_headers(id=user.id)
1414
{
15-
"Authorization" => token_generator(user.id),
15+
"Authorization" => token_generator(id),
1616
"Content-Type" => "application/json"
1717
}
1818
end
1919

20+
def admin_headers
21+
22+
end
23+
2024
# return invalid headers
2125
def invalid_headers
2226
{

0 commit comments

Comments
 (0)