86 lines
2.4 KiB
Ruby
86 lines
2.4 KiB
Ruby
require_relative "spec_helper"
|
|
require ::File.join ::File.dirname(__FILE__), "..", "libraries", "uri"
|
|
require "uri"
|
|
|
|
describe ::Openstack do
|
|
before do
|
|
@subject = ::Object.new.extend(::Openstack)
|
|
end
|
|
|
|
describe "#uri_from_hash" do
|
|
it "returns nil when no host or uri key found" do
|
|
hash = {
|
|
"port" => 8888,
|
|
"path" => "/path"
|
|
}
|
|
@subject.uri_from_hash(hash).should be_nil
|
|
end
|
|
it "returns uri when uri key found, ignoring other parts" do
|
|
uri = "http://localhost/"
|
|
hash = {
|
|
"port" => 8888,
|
|
"path" => "/path",
|
|
"uri" => uri
|
|
}
|
|
result = @subject.uri_from_hash(hash)
|
|
result.should be_a URI
|
|
result.to_s.should == uri
|
|
end
|
|
it "constructs from host" do
|
|
uri = "https://localhost:8888/path"
|
|
hash = {
|
|
"scheme" => 'https',
|
|
"port" => 8888,
|
|
"path" => "/path",
|
|
"host" => "localhost"
|
|
}
|
|
result = @subject.uri_from_hash(hash)
|
|
result.to_s.should == uri
|
|
end
|
|
it "constructs with defaults" do
|
|
uri = "https://localhost"
|
|
hash = {
|
|
"scheme" => 'https',
|
|
"host" => "localhost"
|
|
}
|
|
result = @subject.uri_from_hash(hash)
|
|
result.to_s.should == uri
|
|
end
|
|
it "constructs with extraneous keys" do
|
|
uri = "http://localhost"
|
|
hash = {
|
|
"host" => "localhost",
|
|
"network" => "public" # To emulate the osops-utils::ip_location way...
|
|
}
|
|
result = @subject.uri_from_hash(hash)
|
|
result.to_s.should == uri
|
|
end
|
|
end
|
|
|
|
describe "#uri_join_paths" do
|
|
it "returns nil when no paths are passed in" do
|
|
@subject.uri_join_paths().should be_nil
|
|
end
|
|
it "preserves absolute path when only absolute path passed in" do
|
|
path = "/abspath"
|
|
result = @subject.uri_join_paths(path)
|
|
result.should == path
|
|
end
|
|
it "preserves relative path when only relative path passed in" do
|
|
path = "abspath/"
|
|
result = @subject.uri_join_paths(path)
|
|
result.should == path
|
|
end
|
|
it "preserves leadng and trailing slashes" do
|
|
expected = "/path/to/resource/"
|
|
result = @subject.uri_join_paths("/path", "to", "resource/")
|
|
result.should == expected
|
|
end
|
|
it "removes extraneous intermediate slashes" do
|
|
expected = "/path/to/resource"
|
|
result = @subject.uri_join_paths("/path", "//to/", "/resource")
|
|
result.should == expected
|
|
end
|
|
end
|
|
end
|