Skip to content

Commit

Permalink
Merge pull request #137 from jbonnet/v4.0
Browse files Browse the repository at this point in the history
V4.0
  • Loading branch information
jbonnet committed Aug 29, 2018
2 parents 19531f5 + 5b41598 commit a7c06b4
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 30 deletions.
4 changes: 2 additions & 2 deletions tng-router/config/vnv_routes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ paths:
site: http://tng-gtk-common:5000/functions
verbs: [ get, options ]
/api/v3/tests/plans(/?|/*):
site: http://tng-gtk-vnv:5000/
site: http://tng-gtk-vnv:5000/plans
verbs: [ get, post, options ]
/api/v3/tests(/?|/*):
site: http://tng-gtk-vnv:5000/
site: http://tng-gtk-vnv:5000
verbs: [ get, options ]
82 changes: 54 additions & 28 deletions tng-router/spec/unit/upstream_finder_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,40 +35,66 @@
RSpec.describe UpstreamFinder do
let(:app) { ->(env) { [200, env, "app"] } }
let(:base_path) {''}
let(:paths) {{
:"/api/v3/packages(/?|/*)"=>{:site=>"http://tng-gtk-common:5000/packages", :verbs=>["get", "post"]},
:"/api/v3/services(/?|/*)"=>{:site=>"http://tng-gtk-common:5000/services"},
:"/api/v3/functions(/?|/*)"=>{:site=>"http://tng-gtk-common:5000/functions"},
:"/api/v3/records(/?|/*)"=>{:site=>"http://tng-gtk-common:5000/records"},
:"/slices(/?|/*)"=>{:site=>"http://tng-slice-mngr:5998", :verbs=>["get", "post", "delete"]},
:"/policies(/?|/*)"=>{:site=>"http://tng-policy-mngr:8081"},
:"/slas(/?|/*)"=>{:site=>"http://tng-sla-mgmt:8080"}}}
let(:middleware) { described_class.new(app, base_path: base_path, paths: paths) }
context 'Service Platform' do
let(:paths) {{
:"/api/v3/packages(/?|/*)"=>{:site=>"http://tng-gtk-common:5000/packages", :verbs=>["get", "post"]},
:"/api/v3/services(/?|/*)"=>{:site=>"http://tng-gtk-common:5000/services"},
:"/api/v3/functions(/?|/*)"=>{:site=>"http://tng-gtk-common:5000/functions"},
:"/api/v3/records(/?|/*)"=>{:site=>"http://tng-gtk-common:5000/records"},
:"/slices(/?|/*)"=>{:site=>"http://tng-slice-mngr:5998", :verbs=>["get", "post", "delete"]},
:"/policies(/?|/*)"=>{:site=>"http://tng-policy-mngr:8081"},
:"/slas(/?|/*)"=>{:site=>"http://tng-sla-mgmt:8080"}}}
let(:middleware) { described_class.new(app, base_path: base_path, paths: paths) }

it "processes GET requests" do
env = env_for('http://example.com/api/v3/packages/status/123', request_method: 'GET',
'5gtango.sink_path'=>'http://tng-gtk-common:5000/packages', '5gtango.logger'=> Logger.new(STDERR))
code, env = middleware.call(env)
expect(code).to eq(200)
expect(env['5gtango.sink_path']).to eq('http://tng-gtk-common:5000/packages/status/123')
it "processes GET requests" do
env = env_for('http://example.com/api/v3/packages/status/123', request_method: 'GET',
'5gtango.sink_path'=>'http://tng-gtk-common:5000/packages', '5gtango.logger'=> Logger.new(STDERR))
code, env = middleware.call(env)
expect(code).to eq(200)
expect(env['5gtango.sink_path']).to eq('http://tng-gtk-common:5000/packages/status/123')
end

describe '.build_path' do
it 'is ok for /packages' do
env = env_for('http://example.com/api/v3/packages', request_method: 'GET', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-common:5000/packages'
end
it 'is ok for /packages/' do
env = env_for('http://example.com/api/v3/packages/', request_method: 'GET', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-common:5000/packages'
end
it 'is ok for /packages?page_number=0&page_size=100' do
env = env_for('http://example.com/api/v3/packages?page_number=0&page_size=100', request_method: 'GET', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-common:5000/packages?page_number=0&page_size=100'
end
it 'is ok for /packages/status/:uuid' do
env = env_for('http://example.com/api/v3/packages/status/123', request_method: 'GET', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-common:5000/packages/status/123'
end
end
end

describe '.build_path' do
it 'is ok for /packages' do
env = env_for('http://example.com/api/v3/packages', request_method: 'GET', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-common:5000/packages'
context 'V&V Platform' do
let(:paths) {{
:"/api/v3/tests/plans(/?|/*)"=>{:site=>"http://tng-gtk-vnv:5000/plans", :verbs=>["get", "post", "options"]},
:"/api/v3/tests(/?|/*)"=>{:site=>"http://tng-gtk-vnv:5000", :verbs=>["get", "options"]}
}}
let(:middleware) { described_class.new(app, base_path: base_path, paths: paths) }
it 'is ok for POSTing /tests/plans' do
env = env_for('http://example.com/api/v3/tests/plans', request_method: 'POST', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-vnv:5000/plans'
end
it 'is ok for /packages/' do
env = env_for('http://example.com/api/v3/packages/', request_method: 'GET', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-common:5000/packages'
it 'is ok for GETing /tests/plans' do
env = env_for('http://example.com/api/v3/tests/plans', request_method: 'GET', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-vnv:5000/plans'
end
it 'is ok for /packages?page_number=0&page_size=100' do
env = env_for('http://example.com/api/v3/packages?page_number=0&page_size=100', request_method: 'GET', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-common:5000/packages?page_number=0&page_size=100'
it 'is ok for GETing /tests/descriptors' do
env = env_for('http://example.com/api/v3/tests/descriptors', request_method: 'GET', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-vnv:5000/descriptors'
end
it 'is ok for /packages/status/:uuid' do
env = env_for('http://example.com/api/v3/packages/status/123', request_method: 'GET', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-common:5000/packages/status/123'
it 'is ok for GETing /tests/results' do
env = env_for('http://example.com/api/v3/tests/results', request_method: 'GET', '5gtango.logger'=> Logger.new(STDERR))
expect(middleware.build_path(Rack::Request.new(env))).to eq 'http://tng-gtk-vnv:5000/results'
end
end
def env_for url, opts={}
Expand Down

0 comments on commit a7c06b4

Please sign in to comment.