diff --git a/lib/travis/api/app/endpoint/assembla.rb b/lib/travis/api/app/endpoint/assembla.rb index f8936bd0f..bee33b80a 100644 --- a/lib/travis/api/app/endpoint/assembla.rb +++ b/lib/travis/api/app/endpoint/assembla.rb @@ -33,7 +33,9 @@ class Assembla < Endpoint { user_id: user.id, login: user.login, - token: access_token + token: access_token, + asset_token: user.asset_token, + rss_token: user.rss_token } end diff --git a/lib/travis/model/user.rb b/lib/travis/model/user.rb index d28bd7230..5f770b2fa 100644 --- a/lib/travis/model/user.rb +++ b/lib/travis/model/user.rb @@ -50,6 +50,14 @@ def with_email(email_address) end end + def asset_token + tokens.asset.first&.token + end + + def rss_token + tokens.rss.first&.token + end + def touch update(last_activity_at: Time.now) if last_activity_at.nil? || Time.now.utc - last_activity_at > 300 end diff --git a/spec/lib/model/user_spec.rb b/spec/lib/model/user_spec.rb index c598d83a1..a680920c3 100644 --- a/spec/lib/model/user_spec.rb +++ b/spec/lib/model/user_spec.rb @@ -201,6 +201,18 @@ def user(payload) end end + describe '#asset_token' do + it 'returns the asset token' do + expect(user.asset_token).to eq(user.tokens.asset.first.token) + end + end + + describe '#rss_token' do + it 'returns the rss token' do + expect(user.rss_token).to eq(user.tokens.rss.first.token) + end + end + describe '#preferences' do it 'keeps them as ruby hash' do user.preferences = { 'a' => 'b', 'c' => 'd' }.to_json diff --git a/spec/unit/endpoint/assembla_spec.rb b/spec/unit/endpoint/assembla_spec.rb index 08145da87..44bcf106c 100644 --- a/spec/unit/endpoint/assembla_spec.rb +++ b/spec/unit/endpoint/assembla_spec.rb @@ -19,7 +19,7 @@ } end let(:token) { JWT.encode(payload, jwt_secret, 'HS256') } - let(:user) { double('User', id: 1, login: 'testuser', token: 'abc123', name: 'Test User', email: 'test@example.com', organizations: organizations) } + let(:user) { double('User', id: 1, login: 'testuser', token: 'abc123', rss_token: "rss_token", asset_token: 'asset_token', name: 'Test User', email: 'test@example.com', organizations: organizations) } let(:organization) { double('Organization', id: 1) } let(:organizations) { double('Organizations') } let(:subscription_response) { { 'status' => 'subscribed' } } @@ -59,6 +59,8 @@ body = JSON.parse(last_response.body) expect(body['login']).to eq(user.login) expect(body['token']).to eq(access_token.token) + expect(body['asset_token']).to eq(user.asset_token) + expect(body['rss_token']).to eq(user.rss_token) end end