spec/manifests/manifests_spec.rb in cf-4.2.9.rc3 vs spec/manifests/manifests_spec.rb in cf-4.2.9.rc5
- old
+ new
@@ -69,11 +69,27 @@
:name => "service-1",
:service_plan =>
build(
:service_plan,
:name => "P200",
- :service => build(:service))))
+ :service => build(:service,
+ label: "managed",
+ provider: "hamazon",
+ version: "v3"
+ )
+ )
+ )
+ ),
+ build(
+ :service_binding,
+ :service_instance =>
+ build(
+ :user_provided_service_instance,
+ :name => "service-2",
+ :credentials => { uri: "mysql://example.com" }
+ )
+ )
]
end
subject { cmd.create_manifest_for(app, "some-path") }
@@ -85,32 +101,22 @@
its(["domain"]) { should eq app.domain }
its(["command"]) { should eq "ruby main.rb" }
its(["buildpack"]) { should eq "git://example.com/foo.git" }
it "contains the service information" do
- expect(subject["services"]).to be_a Hash
-
- services = subject["services"]
- app.service_bindings.each do |b|
- service = b.service_instance
-
- expect(services).to include service.name
-
- info = services[service.name]
-
- plan = service.service_plan
- offering = plan.service
-
- {"plan" => plan.name,
- "label" => offering.label,
- "provider" => offering.provider,
- "version" => offering.version
- }.each do |attr, val|
- expect(info).to include attr
- expect(info[attr]).to eq val
- end
- end
+ expect(subject["services"]).to eq(
+ "service-1" => {
+ "plan" => "P200",
+ "label" => "managed",
+ "provider" => "hamazon",
+ "version" => "v3",
+ },
+ "service-2" => {
+ "credentials" => {"uri" => "mysql://example.com"},
+ "label" => "user-provided"
+ },
+ )
end
context "with only minimum configuration" do
let(:app) {
build :app,
@@ -131,9 +137,24 @@
let(:service_bindings) { [] }
let(:app) { build :app, :service_bindings => service_bindings }
before do
dont_allow_ask(anything, anything)
+ end
+
+ context "when user-provided services are defined in the manifest" do
+ let(:client) do
+ build(:client).tap { |client| client.stub(:services => [], :service_instances => []) }
+ end
+
+ let(:info) { {:services => {'moracle' => {:label => "user-provided", :credentials =>{"k" => "v"}}}}}
+
+ it "creates the service with label user-provided" do
+ cmd.should_receive(:invoke).with(:create_service,
+ :name => 'moracle', :offering => has_label("user-provided"), :app => app, :credentials => {"k" => "v"}
+ )
+ cmd.send("setup_services", app, info)
+ end
end
context "when services are defined in the manifest" do
let(:info) do
{:services => {"service-1" => {:label => "mysql", :plan => "100"}}}