cfoundry 1.5.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/cfoundry/test_support.rb +2 -2
- data/lib/cfoundry/v2/app.rb +3 -6
- data/lib/cfoundry/v2/model.rb +1 -0
- data/lib/cfoundry/version.rb +1 -1
- data/spec/cfoundry/client_spec.rb +1 -1
- data/spec/cfoundry/rest_client_spec.rb +1 -1
- data/spec/cfoundry/trace_helpers_spec.rb +6 -6
- data/spec/cfoundry/upload_helpers_spec.rb +125 -137
- data/spec/cfoundry/v2/app_event_spec.rb +63 -59
- data/spec/cfoundry/v2/app_spec.rb +195 -188
- data/spec/cfoundry/v2/client_spec.rb +60 -56
- data/spec/cfoundry/v2/domain_spec.rb +9 -6
- data/spec/cfoundry/v2/model_magic/model_magic/attribute_spec.rb +89 -88
- data/spec/cfoundry/v2/model_magic/model_magic/has_summary_spec.rb +12 -13
- data/spec/cfoundry/v2/model_magic/model_magic/to_many_spec.rb +46 -52
- data/spec/cfoundry/v2/model_magic/model_magic/to_one_spec.rb +96 -87
- data/spec/cfoundry/v2/model_spec.rb +236 -241
- data/spec/cfoundry/v2/organization_spec.rb +20 -22
- data/spec/cfoundry/v2/quota_definition_spec.rb +45 -47
- data/spec/cfoundry/v2/route_spec.rb +28 -25
- data/spec/cfoundry/v2/space_spec.rb +9 -11
- data/spec/cfoundry/validator_spec.rb +69 -67
- data/spec/factories/app_events_factory.rb +7 -0
- data/spec/factories/apps_factory.rb +11 -0
- data/spec/factories/clients_factory.rb +5 -0
- data/spec/factories/domains_factory.rb +7 -0
- data/spec/factories/organizations_factory.rb +11 -0
- data/spec/factories/quota_definitions_factory.rb +8 -0
- data/spec/factories/routes_factory.rb +10 -0
- data/spec/factories/spaces_factory.rb +10 -0
- data/spec/factories/users_factory.rb +10 -0
- data/spec/spec_helper.rb +5 -4
- data/spec/support/factory_girl.rb +6 -0
- data/spec/support/shared_examples/model_summary_examples.rb +7 -7
- data/spec/support/test_model_builder.rb +10 -0
- metadata +83 -71
- data/spec/fakes/app_fake.rb +0 -5
- data/spec/fakes/domain_fake.rb +0 -5
- data/spec/fakes/framework_fake.rb +0 -5
- data/spec/fakes/organization_fake.rb +0 -5
- data/spec/fakes/route_fake.rb +0 -5
- data/spec/fakes/runtime_fake.rb +0 -5
- data/spec/fakes/service_fake.rb +0 -5
- data/spec/fakes/service_instance_fake.rb +0 -5
- data/spec/fakes/service_plan_fake.rb +0 -5
- data/spec/fakes/space_fake.rb +0 -5
- data/spec/fakes/user_fake.rb +0 -5
- data/spec/support/fake_helper.rb +0 -248
- data/spec/support/randoms.rb +0 -3
| @@ -1,30 +1,28 @@ | |
| 1 1 | 
             
            require "spec_helper"
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
               | 
| 3 | 
            +
            module CFoundry
         | 
| 4 | 
            +
              module V2
         | 
| 5 | 
            +
                describe Organization do
         | 
| 6 | 
            +
                  let(:client) { build(:client) }
         | 
| 7 | 
            +
                  let(:organization) { build(:organization, :client => client) }
         | 
| 5 8 |  | 
| 6 | 
            -
             | 
| 9 | 
            +
                  it_behaves_like "a summarizeable model" do
         | 
| 10 | 
            +
                    subject { organization }
         | 
| 11 | 
            +
                    let(:summary_attributes) { {:name => "fizzbuzz"} }
         | 
| 12 | 
            +
                  end
         | 
| 7 13 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 14 | 
            +
                  it "has quota_definition" do
         | 
| 15 | 
            +
                    quota = build(:quota_definition)
         | 
| 16 | 
            +
                    organization.quota_definition = quota
         | 
| 17 | 
            +
                    expect(organization.quota_definition).to eq(quota)
         | 
| 18 | 
            +
                  end
         | 
| 12 19 |  | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
                quota = fake(:quota_definition)
         | 
| 20 | 
            -
                subject.quota_definition = quota
         | 
| 21 | 
            -
                expect(subject.quota_definition).to eq(quota)
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              it "has billing_enabled" do
         | 
| 25 | 
            -
                [true, false].each do |v|
         | 
| 26 | 
            -
                  subject.billing_enabled = v
         | 
| 27 | 
            -
                  expect(subject.billing_enabled).to eq(v)
         | 
| 20 | 
            +
                  it "has billing_enabled" do
         | 
| 21 | 
            +
                    [true, false].each do |v|
         | 
| 22 | 
            +
                      organization.billing_enabled = v
         | 
| 23 | 
            +
                      expect(organization.billing_enabled).to eq(v)
         | 
| 24 | 
            +
                    end
         | 
| 25 | 
            +
                  end
         | 
| 28 26 | 
             
                end
         | 
| 29 27 | 
             
              end
         | 
| 30 28 | 
             
            end
         | 
| @@ -1,52 +1,50 @@ | |
| 1 1 | 
             
            require "spec_helper"
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
               | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
                  quota = quota_definitions.last
         | 
| 49 | 
            -
                  expect(client.quota_definition_by_name("bar")).to eq(bar)
         | 
| 3 | 
            +
            module CFoundry
         | 
| 4 | 
            +
              module V2
         | 
| 5 | 
            +
                describe QuotaDefinition do
         | 
| 6 | 
            +
                  let(:quota_definition) { build(:quota_definition) }
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  it "has guid" do
         | 
| 9 | 
            +
                    quota_definition.guid = "quota-definition-1"
         | 
| 10 | 
            +
                    expect(quota_definition.guid).to eq("quota-definition-1")
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  it "has name" do
         | 
| 14 | 
            +
                    quota_definition.name = "name"
         | 
| 15 | 
            +
                    expect(quota_definition.name).to eq("name")
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  it "has non_basic_services_allowed" do
         | 
| 19 | 
            +
                    [true, false].each do |v|
         | 
| 20 | 
            +
                      quota_definition.non_basic_services_allowed = v
         | 
| 21 | 
            +
                      expect(quota_definition.non_basic_services_allowed).to eq(v)
         | 
| 22 | 
            +
                    end
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  it "has total_services" do
         | 
| 26 | 
            +
                    [0, 1].each do |v|
         | 
| 27 | 
            +
                      quota_definition.total_services = v
         | 
| 28 | 
            +
                      expect(quota_definition.total_services).to eq(v)
         | 
| 29 | 
            +
                    end
         | 
| 30 | 
            +
                  end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  it "has total_services" do
         | 
| 33 | 
            +
                    [0, 1].each do |v|
         | 
| 34 | 
            +
                      quota_definition.total_services = v
         | 
| 35 | 
            +
                      expect(quota_definition.total_services).to eq(v)
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  describe "querying" do
         | 
| 40 | 
            +
                    let(:client) { build(:client) }
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    it "is queryable by name" do
         | 
| 43 | 
            +
                      mock(client).quota_definitions({:query=>[:name, "quota-name"]}) {[]}
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                      client.quota_definition_by_name("quota-name")
         | 
| 46 | 
            +
                    end
         | 
| 47 | 
            +
                  end
         | 
| 50 48 | 
             
                end
         | 
| 51 49 | 
             
              end
         | 
| 52 50 | 
             
            end
         | 
| @@ -1,38 +1,41 @@ | |
| 1 1 | 
             
            # encoding: UTF-8
         | 
| 2 | 
            -
            require  | 
| 2 | 
            +
            require "spec_helper"
         | 
| 3 3 |  | 
| 4 | 
            -
            module CFoundry | 
| 5 | 
            -
               | 
| 6 | 
            -
                 | 
| 4 | 
            +
            module CFoundry
         | 
| 5 | 
            +
              module V2
         | 
| 6 | 
            +
                describe Route do
         | 
| 7 | 
            +
                  let(:route) { build(:route) }
         | 
| 8 | 
            +
                  subject { route }
         | 
| 7 9 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 10 | 
            +
                  describe "validations" do
         | 
| 11 | 
            +
                    it { should validate_presence_of(:domain) }
         | 
| 12 | 
            +
                    it { should validate_presence_of(:space) }
         | 
| 11 13 |  | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 14 | 
            +
                    # http://tools.ietf.org/html/rfc1035
         | 
| 15 | 
            +
                    it "only allows host names according to RFC1035" do
         | 
| 16 | 
            +
                      message = "can only include a-z, 0-9 and -"
         | 
| 15 17 |  | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            +
                      route.should allow_value("a", "starts-with-letter", "includes-9-digits", "ends-with-letter",
         | 
| 19 | 
            +
                        "ends-with-digit-9", "can--have--consecutive---dashes", "allows-UPPERCASE-chars").for(:host)
         | 
| 18 20 |  | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 21 | 
            +
                      ["-must-start-with-letter", "9must-start-with-letter", "must-not-end-with-dash-", "must-not-include-punctuation-chars-@\#$%^&*()",
         | 
| 22 | 
            +
                        "must-not-include-special-chars-ä", "must.not.include.dots"].each do |bad_value|
         | 
| 23 | 
            +
                        route.should_not allow_value(bad_value).for(:host).with_message(message)
         | 
| 24 | 
            +
                      end
         | 
| 23 25 |  | 
| 24 | 
            -
             | 
| 26 | 
            +
                      route.should ensure_length_of(:host).is_at_most(63)
         | 
| 27 | 
            +
                    end
         | 
| 25 28 | 
             
                  end
         | 
| 26 | 
            -
                end
         | 
| 27 29 |  | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 30 | 
            +
                  describe "errors" do
         | 
| 31 | 
            +
                    before do
         | 
| 32 | 
            +
                      stub(route).create! { raise CFoundry::RouteHostTaken.new("the host is taken", 210003) }
         | 
| 33 | 
            +
                    end
         | 
| 32 34 |  | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 35 | 
            +
                    it "populates errors on host" do
         | 
| 36 | 
            +
                      route.create
         | 
| 37 | 
            +
                      route.errors[:host].first.should =~ /the host is taken/i
         | 
| 38 | 
            +
                    end
         | 
| 36 39 | 
             
                  end
         | 
| 37 40 | 
             
                end
         | 
| 38 41 | 
             
              end
         | 
| @@ -1,15 +1,13 @@ | |
| 1 1 | 
             
            require "spec_helper"
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
               | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
                 | 
| 12 | 
            -
             | 
| 13 | 
            -
                it_behaves_like 'a summarizeable model'
         | 
| 3 | 
            +
            module CFoundry
         | 
| 4 | 
            +
              module V2
         | 
| 5 | 
            +
                describe Space do
         | 
| 6 | 
            +
                  it_behaves_like "a summarizeable model" do
         | 
| 7 | 
            +
                    let(:summary_attributes) { {:name => "fizzbuzz"} }
         | 
| 8 | 
            +
                    let(:client) { build(:client) }
         | 
| 9 | 
            +
                    subject { build(:space, :client => client) }
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                end
         | 
| 14 12 | 
             
              end
         | 
| 15 13 | 
             
            end
         | 
| @@ -1,92 +1,94 @@ | |
| 1 | 
            -
            require  | 
| 1 | 
            +
            require "spec_helper"
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
               | 
| 3 | 
            +
            module CFoundry
         | 
| 4 | 
            +
              describe Validator do
         | 
| 5 | 
            +
                let(:validator) { described_class }
         | 
| 5 6 |  | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 7 | 
            +
                describe "value_matches?" do
         | 
| 8 | 
            +
                  it "returns true on nil values" do
         | 
| 9 | 
            +
                    validator.value_matches?(nil, :something).should be_true
         | 
| 10 | 
            +
                  end
         | 
| 10 11 |  | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 12 | 
            +
                  context "with a type of Class" do
         | 
| 13 | 
            +
                    it "returns true when value is of type class" do
         | 
| 14 | 
            +
                      validator.value_matches?(1, Integer).should be_true
         | 
| 15 | 
            +
                    end
         | 
| 14 16 | 
             
                  end
         | 
| 15 | 
            -
                end
         | 
| 16 17 |  | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 18 | 
            +
                  context "with a Regex" do
         | 
| 19 | 
            +
                    it "returns true when the regex matches" do
         | 
| 20 | 
            +
                      validator.value_matches?("value", /lue/).should == true
         | 
| 21 | 
            +
                    end
         | 
| 20 22 | 
             
                  end
         | 
| 21 | 
            -
                end
         | 
| 22 23 |  | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 24 | 
            +
                  context "with type of url" do
         | 
| 25 | 
            +
                    it "requires http or https urls" do
         | 
| 26 | 
            +
                      validator.value_matches?("http:whatever", :url).should be_true
         | 
| 27 | 
            +
                      validator.value_matches?("https:whatever", :url).should be_true
         | 
| 28 | 
            +
                      validator.value_matches?("htt_no:whatever", :url).should be_false
         | 
| 29 | 
            +
                    end
         | 
| 28 30 | 
             
                  end
         | 
| 29 | 
            -
                end
         | 
| 30 31 |  | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 32 | 
            +
                  context "with type of https_url" do
         | 
| 33 | 
            +
                    it "requires http or https urls" do
         | 
| 34 | 
            +
                      validator.value_matches?("https:whatever", :https_url).should be_true
         | 
| 35 | 
            +
                      validator.value_matches?("http:whatever", :https_url).should be_false
         | 
| 36 | 
            +
                    end
         | 
| 35 37 | 
             
                  end
         | 
| 36 | 
            -
                end
         | 
| 37 38 |  | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 39 | 
            +
                  context "with type boolean" do
         | 
| 40 | 
            +
                    it "returns true on presence of true or false" do
         | 
| 41 | 
            +
                      validator.value_matches?(true, :boolean).should be_true
         | 
| 42 | 
            +
                      validator.value_matches?(false, :boolean).should be_true
         | 
| 43 | 
            +
                      validator.value_matches?("no boolean", :boolean).should be_false
         | 
| 44 | 
            +
                    end
         | 
| 43 45 | 
             
                  end
         | 
| 44 | 
            -
                end
         | 
| 45 46 |  | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 47 | 
            +
                  context "with an Array" do
         | 
| 48 | 
            +
                    it "returns true when all elements are of same type" do
         | 
| 49 | 
            +
                      validator.value_matches?(["https:whatever"], [String]).should be_true
         | 
| 50 | 
            +
                      validator.value_matches?(["https:whatever"], [Integer]).should be_false
         | 
| 51 | 
            +
                    end
         | 
| 50 52 | 
             
                  end
         | 
| 51 | 
            -
                end
         | 
| 52 53 |  | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 54 | 
            +
                  context "with a hash" do
         | 
| 55 | 
            +
                    it "returns true when specified types match" do
         | 
| 56 | 
            +
                      validator.value_matches?({:name => "thing"}, {:name => String}).should be_true
         | 
| 57 | 
            +
                      validator.value_matches?({:name => "thing", :unspecified => 1}, {:name => String}).should be_true
         | 
| 58 | 
            +
                      validator.value_matches?({:name => 1}, {:name => String}).should be_false
         | 
| 59 | 
            +
                    end
         | 
| 58 60 | 
             
                  end
         | 
| 59 | 
            -
                end
         | 
| 60 61 |  | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 62 | 
            +
                  it "returns true when type is nil" do
         | 
| 63 | 
            +
                    validator.value_matches?("some value", nil).should be_true
         | 
| 64 | 
            +
                  end
         | 
| 64 65 |  | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 66 | 
            +
                  context "with a symbol" do
         | 
| 67 | 
            +
                    it "returns true when the value is of specified type" do
         | 
| 68 | 
            +
                      validator.value_matches?("some value", :string).should be_true
         | 
| 69 | 
            +
                      validator.value_matches?("some value", :integer).should be_false
         | 
| 70 | 
            +
                    end
         | 
| 69 71 | 
             
                  end
         | 
| 70 72 | 
             
                end
         | 
| 71 | 
            -
              end
         | 
| 72 73 |  | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 74 | 
            +
                describe "validate_type" do
         | 
| 75 | 
            +
                  it "passes validation with a nil value" do
         | 
| 76 | 
            +
                    expect {
         | 
| 77 | 
            +
                      validator.validate_type(nil, :whatever)
         | 
| 78 | 
            +
                    }.to_not raise_error
         | 
| 79 | 
            +
                  end
         | 
| 79 80 |  | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 81 | 
            +
                  it "passes validation when the value matches" do
         | 
| 82 | 
            +
                    expect {
         | 
| 83 | 
            +
                      validator.validate_type("string", :string)
         | 
| 84 | 
            +
                    }.to_not raise_error
         | 
| 85 | 
            +
                  end
         | 
| 85 86 |  | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 87 | 
            +
                  it "raises a validation error when value does not match" do
         | 
| 88 | 
            +
                    expect {
         | 
| 89 | 
            +
                      validator.validate_type("string", :integer)
         | 
| 90 | 
            +
                    }.to raise_error(CFoundry::Mismatch)
         | 
| 91 | 
            +
                  end
         | 
| 90 92 | 
             
                end
         | 
| 91 93 | 
             
              end
         | 
| 92 | 
            -
            end
         | 
| 94 | 
            +
            end
         |