rgovdata 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|