Invalid steam ids on the users API now returns null for steam attributes

This commit is contained in:
Chris Blanchard 2015-08-17 19:06:47 +01:00
parent e6f05374d3
commit a3d9f5bc06
3 changed files with 24 additions and 5 deletions

View file

@ -5,7 +5,7 @@ class Api::V1::UsersController < Api::V1::BaseController
def show def show
@user = User.find(params[:id]) @user = User.find(params[:id])
@steam = SteamCondenser::Community::SteamId.from_steam_id("STEAM_#{@user.steamid}") @steam = steam_profile @user
render json: { render json: {
id: @user.id, id: @user.id,
@ -15,8 +15,8 @@ class Api::V1::UsersController < Api::V1::BaseController
avatar: @user.profile.avatar.url, avatar: @user.profile.avatar.url,
admin: @user.admin?, admin: @user.admin?,
steam: { steam: {
url: @steam.base_url, url: @steam.nil? ? nil : @steam.base_url,
nickname: @steam.nickname nickname: @steam.nil? ? nil : @steam.nickname
}, },
bans: { bans: {
gather: @user.banned?(Ban::TYPE_GATHER).present?, gather: @user.banned?(Ban::TYPE_GATHER).present?,
@ -28,4 +28,12 @@ class Api::V1::UsersController < Api::V1::BaseController
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
raise ActionController::RoutingError.new('User Not Found') raise ActionController::RoutingError.new('User Not Found')
end end
private
def steam_profile user
SteamCondenser::Community::SteamId.from_steam_id("STEAM_#{user.steamid}")
rescue SteamCondenser::Error => e
return nil
end
end end

View file

@ -28,6 +28,17 @@ describe Api::V1::UsersController do
expect(json['team']).to be_nil expect(json['team']).to be_nil
end end
it 'returns data for users with invalid steam ids' do
@user.steamid = '0:0:000'
@user.save!
get :show, id: @user.id
expect(response).to be_success
expect(json['steam']['url']).to be_nil
expect(json['steam']['nickname']).to be_nil
end
it 'returns 404 if user does not exist' do it 'returns 404 if user does not exist' do
expect { expect {
get :show, id: -1 get :show, id: -1

View file

@ -23,8 +23,8 @@ describe Api::V1::UsersCollection do
expect(collection.execute_query.size).to eq(3) expect(collection.execute_query.size).to eq(3)
end end
it 'returns 5 columns' do it 'returns 6 columns' do
expect(collection.execute_query.first.size).to eq(5) expect(collection.execute_query.first.size).to eq(6)
end end
end end
end end