Merge branch 'jc-v3-logs' of github.com:travis-ci/travis-api into jc-v3-logs

This commit is contained in:
carlad 2016-07-28 14:24:08 +02:00
commit beb3e6ca60
7 changed files with 77 additions and 2 deletions

4
.gitignore vendored
View File

@ -4,8 +4,8 @@ config/nginx.conf
config/skylight.yml
tmp/
log/
logs/
/log/
/logs/
!vendor/travis-core/lib/travis/logs/
!vendor/travis-core/lib/travis/model/log/

View File

@ -0,0 +1,7 @@
module Travis::API::V3
class Queries::Log < Query
def find(job)
job.log
end
end
end

View File

@ -0,0 +1,7 @@
require 'travis/api/v3/renderer/model_renderer'
module Travis::API::V3
class Renderer::Log < Renderer::ModelRenderer
representation(:standard, :id, :content)
end
end

View File

@ -43,6 +43,11 @@ module Travis::API::V3
post :cancel, '/cancel'
post :restart, '/restart'
post :debug, '/debug'
resource :log do
route '/log'
get :find
end
end
resource :lint do

View File

@ -16,6 +16,7 @@ module Travis::API::V3
Job = Module.new { extend Services }
Jobs = Module.new { extend Services }
Lint = Module.new { extend Services }
Log = Module.new { extend Services }
Organization = Module.new { extend Services }
Organizations = Module.new { extend Services }
Owner = Module.new { extend Services }

View File

@ -0,0 +1,10 @@
module Travis::API::V3
class Services::Log::Find < Service
params :id, prefix: :job
def run!
job = find(:job)
query.find(job)
end
end
end

View File

@ -0,0 +1,45 @@
require 'spec_helper'
describe Travis::API::V3::Services::Log::Find, set_app: true do
let(:user) { Travis::API::V3::Models::User.find_by_login('svenfuchs') }
let(:repo) { Travis::API::V3::Models::Repository.where(owner_name: user.login, name: 'minimal').first }
let(:build) { repo.builds.last }
let(:job) { Travis::API::V3::Models::Build.find(build.id).jobs.last }
let(:token) { Travis::Api::App::AccessToken.create(user: user, app_id: 1) }
let(:headers) { { 'HTTP_AUTHORIZATION' => "token #{token}" } }
let(:parsed_body) { JSON.load(body) }
context 'when log stored in db' do
describe 'returns log as plain text' do
let(:log) { job.log }
before { get("/v3/job/#{job.id}/log", {}, headers) }
example { expect(last_response).to be_ok }
example do
expect(parsed_body).to eq(
'@href' => "/v3/job/#{job.id}/log",
'@representation' => 'standard',
'@type' => 'log',
'content' => nil,
'id' => log.id
)
end
end
describe 'returns log as chunked json'
end
context 'when log not found in db but stored on S3' do
describe 'returns log as plain text'
describe 'returns log as chunked json'
end
context 'when log not found anywhere' do
describe 'does not return log'
end
context 'when log removed by user' do
describe 'does not return log'
end
end