On 01/16, mar...@redhat.com wrote: ACK.
> From: marios <mar...@redhat.com> > > Openstack driver needs auth for /api > > Signed-off-by: marios <mar...@redhat.com> > --- > tests/deltacloud/base_api_test.rb | 8 ++++---- > tests/deltacloud/test_setup.rb | 17 ++++++++++++++--- > 2 files changed, 18 insertions(+), 7 deletions(-) > > diff --git a/tests/deltacloud/base_api_test.rb > b/tests/deltacloud/base_api_test.rb > index 0af6c3d..65e5a0a 100644 > --- a/tests/deltacloud/base_api_test.rb > +++ b/tests/deltacloud/base_api_test.rb > @@ -22,7 +22,7 @@ describe "Deltacloud API Entry Point" do > > # Get the API entrypoint without any authentication > def get_api(params={}) > - get("/", params.update(:noauth => true)) > + get("/", params) #, params.update(:noauth => true)) > end > > it 'return status 200 OK when accessing API entrypoint' do > @@ -111,7 +111,7 @@ describe "Deltacloud API Entry Point" do > > it 'must re-validate the driver credentials when using "?force_auth" > parameter in URL' do > proc do > - get_api(:force_auth => '1') > + get_api(:noauth=> true, :force_auth => '1') > end.must_raise RestClient::Request::Unauthorized > > res = get("/", :driver => "mock", :force_auth => '1', > @@ -120,10 +120,10 @@ describe "Deltacloud API Entry Point" do > end > > it 'must change the API PROVIDER using the /api;provider matrix parameter > in URI' do > - res = get(";provider=test1", :noauth=>true) > + res = get(";driver=mock;provider=test1") > res.xml.root[:provider].wont_be_nil > res.xml.root[:provider].must_equal 'test1' > - res = get(";provider=test2", :noauth=>true) > + res = get(";driver=mock;provider=test2") > res.xml.root[:provider].must_equal 'test2' > end > > diff --git a/tests/deltacloud/test_setup.rb b/tests/deltacloud/test_setup.rb > index 6182a63..c75b046 100644 > --- a/tests/deltacloud/test_setup.rb > +++ b/tests/deltacloud/test_setup.rb > @@ -77,8 +77,20 @@ module Deltacloud > private > def xml > unless @xml > - @xml = RestClient.get(url).xml > - drv = @xml.root[:driver] > + begin > + @xml = RestClient.get(url).xml > + drv = @xml.root[:driver] > + rescue RestClient::Unauthorized => e > + #need to do this by hand - RestClient only return exception for > 4XX > + #(e.g. Openstack needs creds for /api) - but headers contain > driver > + uri = URI.parse(url) > + http = Net::HTTP.new(uri.host, uri.port) > + request = Net::HTTP::Get.new(uri.path) > + res = http.request(request) > + drv = res["X-Deltacloud-Driver"] > + u,p = [@hash[drv]["user"], @hash[drv]["password"]] > + @xml = RestClient.get(url, {'Authorization' => "Basic > #{Base64.encode64("#{u}:#{p}")}"}).xml > + end > unless @hash[drv] > raise "No config for #{drv} driver in config.yaml used by #{url}" > end > @@ -173,7 +185,6 @@ module Deltacloud::Test::Methods > end > > private > - > def process_url_params(path, params) > path = "" if path == "/" > headers = {} > -- > 1.7.11.7 > -- Michal Fojtik <mfoj...@redhat.com> Deltacloud API, CloudForms