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"}}}