Add simplest log endpoint
Just an excuse to get all the boilerplate classes in place :)
This commit is contained in:
parent
a45d53f73c
commit
316947b7c0
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -4,8 +4,8 @@ config/nginx.conf
|
||||||
config/skylight.yml
|
config/skylight.yml
|
||||||
|
|
||||||
tmp/
|
tmp/
|
||||||
log/
|
/log/
|
||||||
logs/
|
/logs/
|
||||||
!vendor/travis-core/lib/travis/logs/
|
!vendor/travis-core/lib/travis/logs/
|
||||||
!vendor/travis-core/lib/travis/model/log/
|
!vendor/travis-core/lib/travis/model/log/
|
||||||
|
|
||||||
|
|
7
lib/travis/api/v3/queries/log.rb
Normal file
7
lib/travis/api/v3/queries/log.rb
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
module Travis::API::V3
|
||||||
|
class Queries::Log < Query
|
||||||
|
def find(job)
|
||||||
|
job.log
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
7
lib/travis/api/v3/renderer/log.rb
Normal file
7
lib/travis/api/v3/renderer/log.rb
Normal 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
|
|
@ -43,6 +43,11 @@ module Travis::API::V3
|
||||||
post :cancel, '/cancel'
|
post :cancel, '/cancel'
|
||||||
post :restart, '/restart'
|
post :restart, '/restart'
|
||||||
post :debug, '/debug'
|
post :debug, '/debug'
|
||||||
|
|
||||||
|
resource :log do
|
||||||
|
route '/log'
|
||||||
|
get :find
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resource :lint do
|
resource :lint do
|
||||||
|
|
|
@ -16,6 +16,7 @@ module Travis::API::V3
|
||||||
Job = Module.new { extend Services }
|
Job = Module.new { extend Services }
|
||||||
Jobs = Module.new { extend Services }
|
Jobs = Module.new { extend Services }
|
||||||
Lint = Module.new { extend Services }
|
Lint = Module.new { extend Services }
|
||||||
|
Log = Module.new { extend Services }
|
||||||
Organization = Module.new { extend Services }
|
Organization = Module.new { extend Services }
|
||||||
Organizations = Module.new { extend Services }
|
Organizations = Module.new { extend Services }
|
||||||
Owner = Module.new { extend Services }
|
Owner = Module.new { extend Services }
|
||||||
|
|
10
lib/travis/api/v3/services/log/find.rb
Normal file
10
lib/travis/api/v3/services/log/find.rb
Normal 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
|
45
spec/v3/services/log/find_spec.rb
Normal file
45
spec/v3/services/log/find_spec.rb
Normal 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
|
Loading…
Reference in New Issue
Block a user