Skip to content
Snippets Groups Projects
Commit 4ad91d3c authored by Nihad Abbasov's avatar Nihad Abbasov
Browse files

add users API

parent 4aca61e8
No related branches found
No related tags found
No related merge requests found
class Gitlab::API < Grape::API require 'api/entities'
require 'api/helpers'
module Gitlab
class API < Grape::API
format :json
helpers APIHelpers
resource :users do
before { authenticate! }
# GET /users
get do
@users = User.all
present @users, :with => Entities::User
end
# GET /users/:id
get ":id" do
@user = User.find(params[:id])
present @user, :with => Entities::User
end
end
# GET /user
get "/user" do
authenticate!
present @current_user, :with => Entities::User
end
end
end end
module Gitlab
module Entities
class User < Grape::Entity
expose :id, :email, :name, :bio, :skype, :linkedin, :twitter,
:dark_scheme, :theme_id, :blocked, :created_at
end
end
end
module Gitlab
module APIHelpers
def current_user
@current_user ||= User.find_by_authentication_token(params[:private_token])
end
def authenticate!
error!('401 Unauthorized', 401) unless current_user
end
end
end
require 'spec_helper'
describe Gitlab::API do
let(:user) { Factory :user }
describe "GET /users" do
it "should return authentication error" do
get "/api/users"
response.status.should == 401
end
describe "authenticated GET /users" do
it "should return an array of users" do
get "/api/users?private_token=#{user.private_token}"
response.status.should == 200
json = JSON.parse(response.body)
json.should be_an Array
json.first['email'].should == user.email
end
end
end
describe "GET /users/:id" do
it "should return a user by id" do
get "/api/users/#{user.id}?private_token=#{user.private_token}"
response.status.should == 200
JSON.parse(response.body)['email'].should == user.email
end
end
describe "GET /user" do
it "should return current user" do
get "/api/user?private_token=#{user.private_token}"
response.status.should == 200
JSON.parse(response.body)['email'].should == user.email
end
end
end
Loading
@@ -58,4 +58,8 @@ RSpec.configure do |config|
Loading
@@ -58,4 +58,8 @@ RSpec.configure do |config|
config.after do config.after do
DatabaseCleaner.clean DatabaseCleaner.clean
end end
config.include RSpec::Rails::RequestExampleGroup, :type => :request, :example_group => {
:file_path => /spec\/api/
}
end end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment