diff --git a/lib/travis/api/app/endpoint/profile.rb b/lib/travis/api/app/endpoint/profile.rb index 31c41502..8a9096c6 100644 --- a/lib/travis/api/app/endpoint/profile.rb +++ b/lib/travis/api/app/endpoint/profile.rb @@ -2,10 +2,23 @@ require 'travis/api/app' class Travis::Api::App class Endpoint - # TODO: Add documentation. class Profile < Endpoint - # TODO: Add implementation and documentation. - get('/', scope: :private) { raise NotImplementedError } + # Gives information about the currently logged in user. + # + # Example: + # + # { + # "user": { + # "email": "svenfuchs@artweb-design.de", + # "gravatar_id": "402602a60e500e85f2f5dc1ff3648ecb", + # "is_syncing": false, + # "locale": "de", + # "login": "svenfuchs", + # "name": "Sven Fuchs", + # "synced_at": "2012-08-14T22:11:21Z" + # } + # } + get('/', scope: :private) { body(user) } # TODO: Add implementation and documentation. post('/sync', scope: :private) { raise NotImplementedError } diff --git a/spec/endpoint/profile_spec.rb b/spec/endpoint/profile_spec.rb index 63127901..8298d76e 100644 --- a/spec/endpoint/profile_spec.rb +++ b/spec/endpoint/profile_spec.rb @@ -1,5 +1,28 @@ require 'spec_helper' describe Travis::Api::App::Endpoint::Profile do - it 'has to be tested' + include Travis::Testing::Stubs + let(:access_token) { Travis::Api::App::AccessToken.create(user: user) } + + before do + User.stubs(:find_by_login).with(user.login).returns(user) + User.stubs(:find).with(user.id).returns(user) + end + + it 'needs to be authenticated' do + get('/profile').should_not be_ok + end + + it 'replies with the current user' do + get('/profile', access_token: access_token.to_s).should be_ok + parsed_body["user"].should == { + "login" => user.login, + "name" => user.name, + "email" => user.email, + "gravatar_id" => user.gravatar_id, + "locale" => user.locale, + "is_syncing" => user.is_syncing, + "synced_at" => user.synced_at.strftime('%Y-%m-%dT%H:%M:%SZ') + } + end end