rgovdata 0.1.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/.document +5 -0
 - data/.rvmrc +2 -0
 - data/CHANGELOG +7 -0
 - data/Gemfile +18 -0
 - data/Gemfile.lock +48 -0
 - data/LICENSE +20 -0
 - data/README.rdoc +114 -0
 - data/Rakefile +61 -0
 - data/bin/rgd +12 -0
 - data/examples/all_quakes.rb +8 -0
 - data/examples/arbitrary_data.rb +26 -0
 - data/examples/catalog_traversal.rb +34 -0
 - data/examples/earthquakes.rb +5 -0
 - data/lib/rgovdata.rb +4 -0
 - data/lib/rgovdata/catalog.rb +4 -0
 - data/lib/rgovdata/catalog/catalog.rb +79 -0
 - data/lib/rgovdata/catalog/dn.rb +63 -0
 - data/lib/rgovdata/catalog/registry_strategy/internal_registry.rb +12 -0
 - data/lib/rgovdata/catalog/registry_strategy/registry_strategy.rb +26 -0
 - data/lib/rgovdata/config.rb +5 -0
 - data/lib/rgovdata/config/common_config.rb +13 -0
 - data/lib/rgovdata/config/config.rb +133 -0
 - data/lib/rgovdata/data/config_template.yml +19 -0
 - data/lib/rgovdata/data/sg/registry.yml +147 -0
 - data/lib/rgovdata/data/template.rb +27 -0
 - data/lib/rgovdata/data/us/registry.yml +12 -0
 - data/lib/rgovdata/service.rb +10 -0
 - data/lib/rgovdata/service/csv_service.rb +3 -0
 - data/lib/rgovdata/service/dataset/csv_dataset.rb +43 -0
 - data/lib/rgovdata/service/dataset/dataset.rb +91 -0
 - data/lib/rgovdata/service/dataset/file_dataset.rb +46 -0
 - data/lib/rgovdata/service/dataset/odata_dataset.rb +31 -0
 - data/lib/rgovdata/service/file_service.rb +10 -0
 - data/lib/rgovdata/service/listing.rb +47 -0
 - data/lib/rgovdata/service/odata_service.rb +50 -0
 - data/lib/rgovdata/service/service.rb +93 -0
 - data/lib/rgovdata/shell/shell.rb +157 -0
 - data/lib/rgovdata/version.rb +9 -0
 - data/rgovdata.gemspec +128 -0
 - data/spec/fixtures/sample.csv +821 -0
 - data/spec/integration/service/sg/nlb_spec.rb +57 -0
 - data/spec/integration/service/sg/places_spec.rb +73 -0
 - data/spec/integration/service/us/eqs7day-M1_spec.rb +57 -0
 - data/spec/spec_helper.rb +25 -0
 - data/spec/support/config_examples.rb +8 -0
 - data/spec/support/mocks.rb +22 -0
 - data/spec/support/utility.rb +18 -0
 - data/spec/unit/catalog/base_spec.rb +93 -0
 - data/spec/unit/catalog/registry_strategy_spec.rb +28 -0
 - data/spec/unit/config/config_spec.rb +130 -0
 - data/spec/unit/data/template_spec.rb +32 -0
 - data/spec/unit/service/dataset/csv_dataset_spec.rb +42 -0
 - data/spec/unit/service/dataset/dataset_spec.rb +37 -0
 - data/spec/unit/service/dataset/file_dataset_spec.rb +40 -0
 - data/spec/unit/service/dataset/odata_dataset_spec.rb +36 -0
 - data/spec/unit/service/file_service_spec.rb +25 -0
 - data/spec/unit/service/listing_spec.rb +100 -0
 - data/spec/unit/service/odata_service_spec.rb +42 -0
 - data/spec/unit/service/service_spec.rb +82 -0
 - data/spec/unit/shell/shell_spec.rb +10 -0
 - metadata +228 -0
 
| 
         @@ -0,0 +1,57 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # This runs integration tests against the actual OData service
         
     | 
| 
      
 4 
     | 
    
         
            +
            # It uses credentials from the rgovdata.conf file in the project root folder
         
     | 
| 
      
 5 
     | 
    
         
            +
            describe "SG NLB Service" do
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:config) { RGovData::Config.instance }
         
     | 
| 
      
 7 
     | 
    
         
            +
              before :all do
         
     | 
| 
      
 8 
     | 
    
         
            +
                config.load_config(integration_test_config_filename, {:generate_default => true,:required => true})
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
              after :all do
         
     | 
| 
      
 11 
     | 
    
         
            +
                config.clear
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              describe "ServiceListing" do
         
     | 
| 
      
 15 
     | 
    
         
            +
                let(:id) { '//sg/nlb' }
         
     | 
| 
      
 16 
     | 
    
         
            +
                let(:dataset_key) { 'LibrarySet' }
         
     | 
| 
      
 17 
     | 
    
         
            +
                let(:example_attribute) { 'LibraryID' }
         
     | 
| 
      
 18 
     | 
    
         
            +
                let(:record_class) { Library }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                let(:service_listing) { RGovData::Catalog.get(id) }
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                subject { service_listing }
         
     | 
| 
      
 23 
     | 
    
         
            +
                it { should be_a(RGovData::ServiceListing) }
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                describe "#service" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                  let(:service) { service_listing.service }
         
     | 
| 
      
 27 
     | 
    
         
            +
                  subject { service }
         
     | 
| 
      
 28 
     | 
    
         
            +
                  it { should be_a(RGovData::Service) }
         
     | 
| 
      
 29 
     | 
    
         
            +
                  describe "#dataset_keys" do
         
     | 
| 
      
 30 
     | 
    
         
            +
                    subject { service.dataset_keys }
         
     | 
| 
      
 31 
     | 
    
         
            +
                    it { should include(dataset_key) }
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                describe "#find" do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  let(:dataset) { service_listing.find(dataset_key) }
         
     | 
| 
      
 37 
     | 
    
         
            +
                  subject { dataset }
         
     | 
| 
      
 38 
     | 
    
         
            +
                  it { should be_a(RGovData::OdataDataSet) }
         
     | 
| 
      
 39 
     | 
    
         
            +
                  describe "#attributes" do
         
     | 
| 
      
 40 
     | 
    
         
            +
                    subject { dataset.attributes }
         
     | 
| 
      
 41 
     | 
    
         
            +
                    it { should include(example_attribute) }
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
                  describe "#records" do
         
     | 
| 
      
 44 
     | 
    
         
            +
                    let(:record_limit) { 3 }
         
     | 
| 
      
 45 
     | 
    
         
            +
                    before {
         
     | 
| 
      
 46 
     | 
    
         
            +
                      dataset.limit = record_limit
         
     | 
| 
      
 47 
     | 
    
         
            +
                    }
         
     | 
| 
      
 48 
     | 
    
         
            +
                    subject { dataset.records }
         
     | 
| 
      
 49 
     | 
    
         
            +
                    it { should be_a(Array) }
         
     | 
| 
      
 50 
     | 
    
         
            +
                    its(:first) { should be_a(record_class) }
         
     | 
| 
      
 51 
     | 
    
         
            +
                    its(:count) { should eql(record_limit) }
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,73 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # This runs integration tests against the actual OData service
         
     | 
| 
      
 4 
     | 
    
         
            +
            # It uses credentials from the rgovdata.conf file in the project root folder
         
     | 
| 
      
 5 
     | 
    
         
            +
            # describe "Places.sg Service" do
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   let(:config) { RGovData::Config.instance }
         
     | 
| 
      
 7 
     | 
    
         
            +
            #   before :all do
         
     | 
| 
      
 8 
     | 
    
         
            +
            #     config.load_config(integration_test_config_filename, {:generate_default => true,:required => true})
         
     | 
| 
      
 9 
     | 
    
         
            +
            #   end
         
     | 
| 
      
 10 
     | 
    
         
            +
            #   after :all do
         
     | 
| 
      
 11 
     | 
    
         
            +
            #     config.clear
         
     | 
| 
      
 12 
     | 
    
         
            +
            #   end
         
     | 
| 
      
 13 
     | 
    
         
            +
            #
         
     | 
| 
      
 14 
     | 
    
         
            +
            #   describe "ServiceListing" do
         
     | 
| 
      
 15 
     | 
    
         
            +
            #     let(:id) { '//sg/places' }
         
     | 
| 
      
 16 
     | 
    
         
            +
            #     let(:dataset_key) { 'Places' }
         
     | 
| 
      
 17 
     | 
    
         
            +
            #     let(:example_attribute) { 'company_name' }
         
     | 
| 
      
 18 
     | 
    
         
            +
            #     let(:record_class) { Places }
         
     | 
| 
      
 19 
     | 
    
         
            +
            #
         
     | 
| 
      
 20 
     | 
    
         
            +
            #     let(:service_listing) { RGovData::Catalog.get(id) }
         
     | 
| 
      
 21 
     | 
    
         
            +
            #
         
     | 
| 
      
 22 
     | 
    
         
            +
            #     subject { service_listing }
         
     | 
| 
      
 23 
     | 
    
         
            +
            #     it { should be_a(RGovData::ServiceListing) }
         
     | 
| 
      
 24 
     | 
    
         
            +
            #
         
     | 
| 
      
 25 
     | 
    
         
            +
            #     describe "#service" do
         
     | 
| 
      
 26 
     | 
    
         
            +
            #       let(:service) { service_listing.service }
         
     | 
| 
      
 27 
     | 
    
         
            +
            #       subject { service }
         
     | 
| 
      
 28 
     | 
    
         
            +
            #       it { should be_a(RGovData::Service) }
         
     | 
| 
      
 29 
     | 
    
         
            +
            #       describe "#dataset_keys" do
         
     | 
| 
      
 30 
     | 
    
         
            +
            #         subject { service.dataset_keys }
         
     | 
| 
      
 31 
     | 
    
         
            +
            #         it { should include(dataset_key) }
         
     | 
| 
      
 32 
     | 
    
         
            +
            #         context "map to collections" do
         
     | 
| 
      
 33 
     | 
    
         
            +
            #           let(:collections) { service.native_instance.instance_variable_get(:@collections) }
         
     | 
| 
      
 34 
     | 
    
         
            +
            #           it "should include all" do
         
     | 
| 
      
 35 
     | 
    
         
            +
            #             collections.each do |collection|
         
     | 
| 
      
 36 
     | 
    
         
            +
            #               subject.should include(collection)
         
     | 
| 
      
 37 
     | 
    
         
            +
            #             end
         
     | 
| 
      
 38 
     | 
    
         
            +
            #           end
         
     | 
| 
      
 39 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 40 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 41 
     | 
    
         
            +
            #       # describe "#classes" do
         
     | 
| 
      
 42 
     | 
    
         
            +
            #       #   subject { service.native_instance.classes }
         
     | 
| 
      
 43 
     | 
    
         
            +
            #       #   it { puts subject.inspect }
         
     | 
| 
      
 44 
     | 
    
         
            +
            #       # end
         
     | 
| 
      
 45 
     | 
    
         
            +
            #       # describe "#class_metadata" do
         
     | 
| 
      
 46 
     | 
    
         
            +
            #       #   subject { service.native_instance.class_metadata }
         
     | 
| 
      
 47 
     | 
    
         
            +
            #       #   it { puts subject.inspect }
         
     | 
| 
      
 48 
     | 
    
         
            +
            #       # end
         
     | 
| 
      
 49 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 50 
     | 
    
         
            +
            #
         
     | 
| 
      
 51 
     | 
    
         
            +
            #     describe "#find" do
         
     | 
| 
      
 52 
     | 
    
         
            +
            #       let(:dataset) { service_listing.find(dataset_key) }
         
     | 
| 
      
 53 
     | 
    
         
            +
            #       subject { dataset }
         
     | 
| 
      
 54 
     | 
    
         
            +
            #       it { should be_a(RGovData::OdataDataSet) }
         
     | 
| 
      
 55 
     | 
    
         
            +
            #       describe "#attributes" do
         
     | 
| 
      
 56 
     | 
    
         
            +
            #         subject { dataset.attributes }
         
     | 
| 
      
 57 
     | 
    
         
            +
            #         it { should include(example_attribute) }
         
     | 
| 
      
 58 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 59 
     | 
    
         
            +
            #       describe "#records" do
         
     | 
| 
      
 60 
     | 
    
         
            +
            #         let(:record_limit) { 3 }
         
     | 
| 
      
 61 
     | 
    
         
            +
            #         before {
         
     | 
| 
      
 62 
     | 
    
         
            +
            #           dataset.limit = record_limit
         
     | 
| 
      
 63 
     | 
    
         
            +
            #         }
         
     | 
| 
      
 64 
     | 
    
         
            +
            #         subject { dataset.records }
         
     | 
| 
      
 65 
     | 
    
         
            +
            #         it { should be_a(Array) }
         
     | 
| 
      
 66 
     | 
    
         
            +
            #         its(:first) { should be_a(record_class) }
         
     | 
| 
      
 67 
     | 
    
         
            +
            #         its(:count) { should eql(record_limit) }
         
     | 
| 
      
 68 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 69 
     | 
    
         
            +
            #
         
     | 
| 
      
 70 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 71 
     | 
    
         
            +
            #   end
         
     | 
| 
      
 72 
     | 
    
         
            +
            #
         
     | 
| 
      
 73 
     | 
    
         
            +
            # end
         
     | 
| 
         @@ -0,0 +1,57 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # This runs integration tests against the actual csv file service
         
     | 
| 
      
 4 
     | 
    
         
            +
            # It uses credentials from the rgovdata.conf file in the project root folder
         
     | 
| 
      
 5 
     | 
    
         
            +
            describe "Worldwide M1+ Earthquakes" do
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:config) { RGovData::Config.instance }
         
     | 
| 
      
 7 
     | 
    
         
            +
              before :all do
         
     | 
| 
      
 8 
     | 
    
         
            +
                config.load_config(integration_test_config_filename, {:generate_default => true,:required => true})
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
              after :all do
         
     | 
| 
      
 11 
     | 
    
         
            +
                config.clear
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              describe "ServiceListing" do
         
     | 
| 
      
 15 
     | 
    
         
            +
                let(:id) { '//us/eqs7day-M1' }
         
     | 
| 
      
 16 
     | 
    
         
            +
                let(:dataset_key) { :csv }
         
     | 
| 
      
 17 
     | 
    
         
            +
                let(:expect_attributes) { ["Src", "Eqid", "Version", "Datetime", "Lat", "Lon", "Magnitude", "Depth", "NST", "Region"] }
         
     | 
| 
      
 18 
     | 
    
         
            +
                let(:record_class) { CSV::Row }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                let(:service_listing) { RGovData::Catalog.get(id) }
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                subject { service_listing }
         
     | 
| 
      
 23 
     | 
    
         
            +
                it { should be_a(RGovData::ServiceListing) }
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                describe "#service" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                  let(:service) { service_listing.service }
         
     | 
| 
      
 27 
     | 
    
         
            +
                  subject { service }
         
     | 
| 
      
 28 
     | 
    
         
            +
                  it { should be_a(RGovData::Service) }
         
     | 
| 
      
 29 
     | 
    
         
            +
                  describe "#dataset_keys" do
         
     | 
| 
      
 30 
     | 
    
         
            +
                    subject { service.dataset_keys }
         
     | 
| 
      
 31 
     | 
    
         
            +
                    it { should include(dataset_key) }
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                describe "#find" do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  let(:dataset) { service_listing.find(dataset_key) }
         
     | 
| 
      
 37 
     | 
    
         
            +
                  subject { dataset }
         
     | 
| 
      
 38 
     | 
    
         
            +
                  it { should be_a(RGovData::CsvDataSet) }
         
     | 
| 
      
 39 
     | 
    
         
            +
                  describe "#attributes" do
         
     | 
| 
      
 40 
     | 
    
         
            +
                    subject { dataset.attributes }
         
     | 
| 
      
 41 
     | 
    
         
            +
                    it { should eql(expect_attributes) }
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
                  describe "#records" do
         
     | 
| 
      
 44 
     | 
    
         
            +
                    let(:record_limit) { 3 }
         
     | 
| 
      
 45 
     | 
    
         
            +
                    before {
         
     | 
| 
      
 46 
     | 
    
         
            +
                      dataset.limit = record_limit
         
     | 
| 
      
 47 
     | 
    
         
            +
                    }
         
     | 
| 
      
 48 
     | 
    
         
            +
                    subject { dataset.records(true) }
         
     | 
| 
      
 49 
     | 
    
         
            +
                    it { should be_a(Array) }
         
     | 
| 
      
 50 
     | 
    
         
            +
                    its(:first) { should be_a(record_class) }
         
     | 
| 
      
 51 
     | 
    
         
            +
                    its(:count) { should eql(record_limit) }
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
              end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rgovdata'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # Requires supporting ruby files with custom matchers and macros, etc,
         
     | 
| 
      
 4 
     | 
    
         
            +
            # in spec/support/ and its subdirectories.
         
     | 
| 
      
 5 
     | 
    
         
            +
            Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            RSpec.configure do |config|
         
     | 
| 
      
 8 
     | 
    
         
            +
              # == Mock Framework
         
     | 
| 
      
 9 
     | 
    
         
            +
              #
         
     | 
| 
      
 10 
     | 
    
         
            +
              # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
         
     | 
| 
      
 11 
     | 
    
         
            +
              #
         
     | 
| 
      
 12 
     | 
    
         
            +
              # config.mock_with :mocha
         
     | 
| 
      
 13 
     | 
    
         
            +
              # config.mock_with :flexmock
         
     | 
| 
      
 14 
     | 
    
         
            +
              # config.mock_with :rr
         
     | 
| 
      
 15 
     | 
    
         
            +
              config.mock_with :rspec
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
         
     | 
| 
      
 18 
     | 
    
         
            +
              # config.fixture_path = "#{::Rails.root}/spec/fixtures"
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              # If you're not using ActiveRecord, or you'd prefer not to run each of your
         
     | 
| 
      
 21 
     | 
    
         
            +
              # examples within a transaction, remove the following line or assign false
         
     | 
| 
      
 22 
     | 
    
         
            +
              # instead of true.
         
     | 
| 
      
 23 
     | 
    
         
            +
              # config.use_transactional_fixtures = true
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'pathname'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module MocksHelper
         
     | 
| 
      
 4 
     | 
    
         
            +
              def mock_file_path(key)
         
     | 
| 
      
 5 
     | 
    
         
            +
                Pathname.new(File.dirname(__FILE__)).join('..','fixtures',key).to_s
         
     | 
| 
      
 6 
     | 
    
         
            +
              end
         
     | 
| 
      
 7 
     | 
    
         
            +
              def mock_text(key)
         
     | 
| 
      
 8 
     | 
    
         
            +
                IO.read(mock_file_path(key))
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
              def mock_xml(key)
         
     | 
| 
      
 11 
     | 
    
         
            +
                Nokogiri::XML(mock_text(key))
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
              def mock_rails_root
         
     | 
| 
      
 14 
     | 
    
         
            +
                Pathname.new(File.dirname(__FILE__)).join('..','fixtures','rails_root')
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
              def mock_configfile_path
         
     | 
| 
      
 17 
     | 
    
         
            +
                Pathname.new(File.dirname(__FILE__)).join('..','fixtures','rgovdata.conf').to_s
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
              def mock_configfile_path_notfound
         
     | 
| 
      
 20 
     | 
    
         
            +
                Pathname.new(File.dirname(__FILE__)).join('..','fixtures','rgovdata-notfound.conf').to_s
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            def get_temp_file(basename)
         
     | 
| 
      
 2 
     | 
    
         
            +
              require 'tempfile'
         
     | 
| 
      
 3 
     | 
    
         
            +
              f = Tempfile.new(basename)
         
     | 
| 
      
 4 
     | 
    
         
            +
              path = f.path
         
     | 
| 
      
 5 
     | 
    
         
            +
              f.close!()
         
     | 
| 
      
 6 
     | 
    
         
            +
              path
         
     | 
| 
      
 7 
     | 
    
         
            +
            end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            def supported_realms
         
     | 
| 
      
 10 
     | 
    
         
            +
              [:sg,:us]
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            # Returns the config for integration testing
         
     | 
| 
      
 14 
     | 
    
         
            +
            def integration_test_config_filename
         
     | 
| 
      
 15 
     | 
    
         
            +
              filename = "#{File.dirname(__FILE__)}/../../#{RGovData::Config::BASE_NAME}"
         
     | 
| 
      
 16 
     | 
    
         
            +
              STDERR.puts "Running integration tests with config: #{filename}"
         
     | 
| 
      
 17 
     | 
    
         
            +
              filename
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,93 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe RGovData::Catalog do
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              supported_realms.each do |realm|
         
     | 
| 
      
 6 
     | 
    
         
            +
                context "with realm #{realm}" do
         
     | 
| 
      
 7 
     | 
    
         
            +
                  let(:catalog) { RGovData::Catalog.new(realm) }
         
     | 
| 
      
 8 
     | 
    
         
            +
                  subject { catalog }
         
     | 
| 
      
 9 
     | 
    
         
            +
                  its(:realm) { should eql(realm) }
         
     | 
| 
      
 10 
     | 
    
         
            +
                  describe "#services" do
         
     | 
| 
      
 11 
     | 
    
         
            +
                    subject { catalog.services }
         
     | 
| 
      
 12 
     | 
    
         
            +
                    it { should be_a(Array) }
         
     | 
| 
      
 13 
     | 
    
         
            +
                    its(:first) { should be_a(RGovData::ServiceListing) }
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              describe "#get_service" do
         
     | 
| 
      
 19 
     | 
    
         
            +
                let(:catalog) { RGovData::Catalog.new(:sg) }
         
     | 
| 
      
 20 
     | 
    
         
            +
                subject { catalog.get_service(key) }
         
     | 
| 
      
 21 
     | 
    
         
            +
                context "with multiple matches" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                  let(:key) { 'l' }
         
     | 
| 
      
 23 
     | 
    
         
            +
                  it { should be_a(Array) }
         
     | 
| 
      
 24 
     | 
    
         
            +
                  its(:first) { should be_a(RGovData::ServiceListing) }
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
                context "with single match" do
         
     | 
| 
      
 27 
     | 
    
         
            +
                  let(:key) { 'nlb' }
         
     | 
| 
      
 28 
     | 
    
         
            +
                  it { should be_a(RGovData::ServiceListing) }
         
     | 
| 
      
 29 
     | 
    
         
            +
                  its(:realm) { should eql(:sg) }
         
     | 
| 
      
 30 
     | 
    
         
            +
                  its(:key) { should eql(key) }
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              describe "#realms" do
         
     | 
| 
      
 35 
     | 
    
         
            +
                subject { RGovData::Catalog.new(nil).realms }
         
     | 
| 
      
 36 
     | 
    
         
            +
                it { should be_a(Array) }
         
     | 
| 
      
 37 
     | 
    
         
            +
                it "should include supported realms" do
         
     | 
| 
      
 38 
     | 
    
         
            +
                  subject.each do |realm_cat|
         
     | 
| 
      
 39 
     | 
    
         
            +
                    supported_realms.should include(realm_cat.realm)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              describe "#to_s" do
         
     | 
| 
      
 45 
     | 
    
         
            +
                its(:to_s) { should be_a(String) }
         
     | 
| 
      
 46 
     | 
    
         
            +
              end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              describe "#records" do
         
     | 
| 
      
 49 
     | 
    
         
            +
                context "without realm" do
         
     | 
| 
      
 50 
     | 
    
         
            +
                  subject { RGovData::Catalog.new(nil).records }
         
     | 
| 
      
 51 
     | 
    
         
            +
                  it { should be_a(Array) }
         
     | 
| 
      
 52 
     | 
    
         
            +
                  its(:first) { should be_a(RGovData::Catalog) }
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
                context "with realm" do
         
     | 
| 
      
 55 
     | 
    
         
            +
                  subject { RGovData::Catalog.new(supported_realms.first).records }
         
     | 
| 
      
 56 
     | 
    
         
            +
                  it { should be_a(Array) }
         
     | 
| 
      
 57 
     | 
    
         
            +
                  its(:first) { should be_a(RGovData::ServiceListing) }
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              describe "##get" do
         
     | 
| 
      
 62 
     | 
    
         
            +
                subject { RGovData::Catalog.get(key) }
         
     | 
| 
      
 63 
     | 
    
         
            +
                context "with nil selector" do
         
     | 
| 
      
 64 
     | 
    
         
            +
                  let(:key) { nil }
         
     | 
| 
      
 65 
     | 
    
         
            +
                  it { should be_a(RGovData::Catalog) }
         
     | 
| 
      
 66 
     | 
    
         
            +
                  its(:realm) { should be_nil }
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
                context "with blank selector" do
         
     | 
| 
      
 69 
     | 
    
         
            +
                  let(:key) { '' }
         
     | 
| 
      
 70 
     | 
    
         
            +
                  it { should be_a(RGovData::Catalog) }
         
     | 
| 
      
 71 
     | 
    
         
            +
                  its(:realm) { should be_nil }
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
                context "with no realm" do
         
     | 
| 
      
 74 
     | 
    
         
            +
                  let(:key) { '//' }
         
     | 
| 
      
 75 
     | 
    
         
            +
                  it { should be_a(RGovData::Catalog) }
         
     | 
| 
      
 76 
     | 
    
         
            +
                  its(:realm) { should be_nil }
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
      
 78 
     | 
    
         
            +
                context "with realm only" do
         
     | 
| 
      
 79 
     | 
    
         
            +
                  ['//sg','::sg'].each do |key_test|
         
     | 
| 
      
 80 
     | 
    
         
            +
                    let(:key) { key_test}
         
     | 
| 
      
 81 
     | 
    
         
            +
                    it { should be_a(RGovData::Catalog) }
         
     | 
| 
      
 82 
     | 
    
         
            +
                    its(:realm) { should eql(:sg) }
         
     | 
| 
      
 83 
     | 
    
         
            +
                  end
         
     | 
| 
      
 84 
     | 
    
         
            +
                end
         
     | 
| 
      
 85 
     | 
    
         
            +
                context "with realm and service" do
         
     | 
| 
      
 86 
     | 
    
         
            +
                  let(:key) { '//sg/nlb' }
         
     | 
| 
      
 87 
     | 
    
         
            +
                  it { should be_a(RGovData::ServiceListing) }
         
     | 
| 
      
 88 
     | 
    
         
            +
                  its(:realm) { should eql(:sg) }
         
     | 
| 
      
 89 
     | 
    
         
            +
                  its(:key) { should eql('nlb') }
         
     | 
| 
      
 90 
     | 
    
         
            +
                end
         
     | 
| 
      
 91 
     | 
    
         
            +
              end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe RGovData::RegistryStrategy do
         
     | 
| 
      
 4 
     | 
    
         
            +
              {
         
     | 
| 
      
 5 
     | 
    
         
            +
                :sg => {:class => RGovData::InternalRegistry}
         
     | 
| 
      
 6 
     | 
    
         
            +
              }.each do |realm,options|
         
     | 
| 
      
 7 
     | 
    
         
            +
                context "with realm #{realm}" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  describe "##instance_for_realm" do
         
     | 
| 
      
 9 
     | 
    
         
            +
                    subject { RGovData::RegistryStrategy.instance_for_realm(realm) }
         
     | 
| 
      
 10 
     | 
    
         
            +
                    it { should be_a(options[:class]) }
         
     | 
| 
      
 11 
     | 
    
         
            +
                    its(:realm) { should eql(realm) }
         
     | 
| 
      
 12 
     | 
    
         
            +
                    its(:load_services) { should be_a(Array) }
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              describe "#load_services" do
         
     | 
| 
      
 18 
     | 
    
         
            +
                subject { RGovData::RegistryStrategy.new.load_services}
         
     | 
| 
      
 19 
     | 
    
         
            +
                it { should eql([]) }
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              describe "#realm" do
         
     | 
| 
      
 23 
     | 
    
         
            +
                let(:realm) { :xy }
         
     | 
| 
      
 24 
     | 
    
         
            +
                subject { RGovData::RegistryStrategy.new(realm) }
         
     | 
| 
      
 25 
     | 
    
         
            +
                its(:realm) { should eql(realm) }
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,130 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            include MocksHelper
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe RGovData::Config do
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:config) { RGovData::Config.instance }
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              describe "##default_config_file" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                subject { RGovData::Config }
         
     | 
| 
      
 9 
     | 
    
         
            +
                its(:default_config_file) { should match(RGovData::Config::BASE_NAME) }
         
     | 
| 
      
 10 
     | 
    
         
            +
                it "should accept override parameter" do
         
     | 
| 
      
 11 
     | 
    
         
            +
                  subject.default_config_file('foo').should match(/foo/)
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              describe "##template" do
         
     | 
| 
      
 16 
     | 
    
         
            +
                subject { RGovData::Config.template }
         
     | 
| 
      
 17 
     | 
    
         
            +
                it { should be_a(String) }
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              describe "#show_status" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                it { config.should respond_to(:show_status) }
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              describe "#load_default_config" do
         
     | 
| 
      
 25 
     | 
    
         
            +
                before {
         
     | 
| 
      
 26 
     | 
    
         
            +
                  ENV['rgovdata_username'] = nil
         
     | 
| 
      
 27 
     | 
    
         
            +
                  ENV['rgovdata_password'] = nil
         
     | 
| 
      
 28 
     | 
    
         
            +
                }
         
     | 
| 
      
 29 
     | 
    
         
            +
                context "with Rails environment" do
         
     | 
| 
      
 30 
     | 
    
         
            +
                  let(:expect) { 'rails_root_username' }
         
     | 
| 
      
 31 
     | 
    
         
            +
                  before {
         
     | 
| 
      
 32 
     | 
    
         
            +
                    config.stub(:rails_root).and_return(mock_rails_root)
         
     | 
| 
      
 33 
     | 
    
         
            +
                    config.load_default_config
         
     | 
| 
      
 34 
     | 
    
         
            +
                  }
         
     | 
| 
      
 35 
     | 
    
         
            +
                  subject { config.credentialsets['basic']['username']}
         
     | 
| 
      
 36 
     | 
    
         
            +
                  it "should load settings from the Rails.root/config/BASE_NAME file" do
         
     | 
| 
      
 37 
     | 
    
         
            +
                    should eql(expect)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                context "with config file in pwd" do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  let(:expect) { 'mock_username' }
         
     | 
| 
      
 43 
     | 
    
         
            +
                  before {
         
     | 
| 
      
 44 
     | 
    
         
            +
                    config.class.stub(:default_config_file).and_return(mock_configfile_path)
         
     | 
| 
      
 45 
     | 
    
         
            +
                    config.load_default_config
         
     | 
| 
      
 46 
     | 
    
         
            +
                  }
         
     | 
| 
      
 47 
     | 
    
         
            +
                  subject { config.credentialsets['basic']['username']}
         
     | 
| 
      
 48 
     | 
    
         
            +
                  it "should load settings from the pwd file" do
         
     | 
| 
      
 49 
     | 
    
         
            +
                    should eql(expect)
         
     | 
| 
      
 50 
     | 
    
         
            +
                  end
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                context "with no config file and no env setting" do
         
     | 
| 
      
 54 
     | 
    
         
            +
                  let(:expect) { nil }
         
     | 
| 
      
 55 
     | 
    
         
            +
                  before {
         
     | 
| 
      
 56 
     | 
    
         
            +
                    config.class.stub(:default_config_file).and_return(mock_configfile_path_notfound)
         
     | 
| 
      
 57 
     | 
    
         
            +
                    config.load_default_config
         
     | 
| 
      
 58 
     | 
    
         
            +
                  }
         
     | 
| 
      
 59 
     | 
    
         
            +
                  subject { config.credentialsets['basic']}
         
     | 
| 
      
 60 
     | 
    
         
            +
                  it "should load settings from the pwd file" do
         
     | 
| 
      
 61 
     | 
    
         
            +
                    should eql(expect)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  end
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
              describe "#load_config" do
         
     | 
| 
      
 67 
     | 
    
         
            +
                let(:temp_config_file) { get_temp_file('rgovdata_config_test_') }
         
     | 
| 
      
 68 
     | 
    
         
            +
                let(:config) { RGovData::Config.instance }
         
     | 
| 
      
 69 
     | 
    
         
            +
                after do
         
     | 
| 
      
 70 
     | 
    
         
            +
                  File.delete(temp_config_file) if File.exists?(temp_config_file)
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
                it "should not generate template file if auto-generation not enabled" do
         
     | 
| 
      
 73 
     | 
    
         
            +
                  expect {
         
     | 
| 
      
 74 
     | 
    
         
            +
                    config.load_config(temp_config_file,{:generate_default => false})
         
     | 
| 
      
 75 
     | 
    
         
            +
                  }.to raise_error(RGovData::Config::ConfigurationFileNotFound)
         
     | 
| 
      
 76 
     | 
    
         
            +
                end
         
     | 
| 
      
 77 
     | 
    
         
            +
                it "should generate template file if auto-generation is enabled" do
         
     | 
| 
      
 78 
     | 
    
         
            +
                  expect {
         
     | 
| 
      
 79 
     | 
    
         
            +
                    config.load_config(temp_config_file)
         
     | 
| 
      
 80 
     | 
    
         
            +
                  }.to raise_error(RGovData::Config::ConfigurationFileInitialized)
         
     | 
| 
      
 81 
     | 
    
         
            +
                  File.exists?(temp_config_file).should be_true
         
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
              end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
              describe "#credentialsets" do
         
     | 
| 
      
 86 
     | 
    
         
            +
                before :all do
         
     | 
| 
      
 87 
     | 
    
         
            +
                  config.load_config(config.class.template_path,{:generate_default => false})
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
                {
         
     | 
| 
      
 90 
     | 
    
         
            +
                  "basic" => { "username" => "_insert_your_username_here_", "password" => "your_password"},
         
     | 
| 
      
 91 
     | 
    
         
            +
                  "projectnimbus" => { "AccountKey" => "_insert_your_key_here_", "UniqueUserID" => "00000000000000000000000000000001"}
         
     | 
| 
      
 92 
     | 
    
         
            +
                }.each do |credentialset,options|
         
     | 
| 
      
 93 
     | 
    
         
            +
                  context credentialset do
         
     | 
| 
      
 94 
     | 
    
         
            +
                    subject { config.credentialsets[credentialset] }
         
     | 
| 
      
 95 
     | 
    
         
            +
                    it { should be_a(Hash)}
         
     | 
| 
      
 96 
     | 
    
         
            +
                    options.keys.each do |key|
         
     | 
| 
      
 97 
     | 
    
         
            +
                      describe key do
         
     | 
| 
      
 98 
     | 
    
         
            +
                        subject { config.credentialsets[credentialset][key] }
         
     | 
| 
      
 99 
     | 
    
         
            +
                        it { should eql(options[key]) }
         
     | 
| 
      
 100 
     | 
    
         
            +
                      end
         
     | 
| 
      
 101 
     | 
    
         
            +
                    end
         
     | 
| 
      
 102 
     | 
    
         
            +
                  end
         
     | 
| 
      
 103 
     | 
    
         
            +
                end
         
     | 
| 
      
 104 
     | 
    
         
            +
              end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
              {
         
     | 
| 
      
 107 
     | 
    
         
            +
                'projectnimbus_account_key' => {:credentialset=>'projectnimbus', :item=>'AccountKey', :alt=>'UniqueUserID'},
         
     | 
| 
      
 108 
     | 
    
         
            +
                'projectnimbus_unique_user_id' => {:credentialset=>'projectnimbus', :item=>'UniqueUserID', :alt=>'AccountKey'},
         
     | 
| 
      
 109 
     | 
    
         
            +
                'rgovdata_username' => {:credentialset=>'basic', :item=>'username', :alt=>'password'},
         
     | 
| 
      
 110 
     | 
    
         
            +
                'rgovdata_password' => {:credentialset=>'basic', :item=>'password', :alt=>'username'}
         
     | 
| 
      
 111 
     | 
    
         
            +
              }.each do |override,options|
         
     | 
| 
      
 112 
     | 
    
         
            +
                describe "#credentialsets ENV['#{override}'] override" do
         
     | 
| 
      
 113 
     | 
    
         
            +
                  let(:key) { 'abcdefg' }
         
     | 
| 
      
 114 
     | 
    
         
            +
                  before {
         
     | 
| 
      
 115 
     | 
    
         
            +
                    ENV[override] = key
         
     | 
| 
      
 116 
     | 
    
         
            +
                    config.load_config(config.class.template_path,{:generate_default => false})
         
     | 
| 
      
 117 
     | 
    
         
            +
                  }
         
     | 
| 
      
 118 
     | 
    
         
            +
                  after { ENV[override] = nil }
         
     | 
| 
      
 119 
     | 
    
         
            +
                  subject { config.credentialsets[options[:credentialset]][options[:item]] }
         
     | 
| 
      
 120 
     | 
    
         
            +
                  it { should eql(key) }
         
     | 
| 
      
 121 
     | 
    
         
            +
                  describe "other keys" do
         
     | 
| 
      
 122 
     | 
    
         
            +
                    subject { config.credentialsets[options[:credentialset]][options[:alt]] }
         
     | 
| 
      
 123 
     | 
    
         
            +
                    it "should not be affected" do
         
     | 
| 
      
 124 
     | 
    
         
            +
                      should_not be_nil
         
     | 
| 
      
 125 
     | 
    
         
            +
                    end
         
     | 
| 
      
 126 
     | 
    
         
            +
                  end
         
     | 
| 
      
 127 
     | 
    
         
            +
                end
         
     | 
| 
      
 128 
     | 
    
         
            +
              end
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
            end
         
     |