remy 0.0.3 → 0.0.4
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/.rdebugrc +3 -0
- data/.rvmrc +1 -1
- data/README.md +3 -3
- data/lib/remy/bootstrap.rb +2 -2
- data/lib/remy/chef.rb +13 -17
- data/lib/remy/config/chef.rb +56 -0
- data/lib/remy/config/node.rb +9 -0
- data/lib/remy/{remy.rb → config.rb} +17 -47
- data/lib/remy/server.rb +1 -1
- data/lib/remy/utility.rb +7 -0
- data/lib/remy/version.rb +1 -1
- data/lib/remy.rb +2 -1
- data/lib/tasks/remy.rake +5 -11
- data/remy.gemspec +1 -2
- data/spec/fixtures/chef.yml +5 -5
- data/spec/fixtures/hello_world_chef.yml +1 -1
- data/spec/fixtures/node.json +1 -0
- data/spec/remy/bootstrap_spec.rb +9 -9
- data/spec/remy/config/chef_spec.rb +360 -0
- data/spec/remy/config/node_spec.rb +20 -0
- data/spec/remy/integration/chef_spec.rb +4 -4
- data/spec/remy/utility_spec.rb +22 -0
- data/spec/remy_spec.rb +23 -251
- data/spec/spec_helper.rb +7 -4
- data/spec/tasks/remy_spec.rb +14 -0
- metadata +100 -146
- data/spec/remy/chef_spec.rb +0 -82
    
        data/spec/remy_spec.rb
    CHANGED
    
    | @@ -1,340 +1,112 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe Remy do
         | 
| 4 | 
            -
              describe '.configuration' do
         | 
| 5 | 
            -
                describe 'with no yml files' do
         | 
| 6 | 
            -
                  it 'should return an empty mash' do
         | 
| 7 | 
            -
                    Remy.configuration.should == Hashie::Mash.new
         | 
| 8 | 
            -
                  end
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                describe "yml files" do
         | 
| 12 | 
            -
                  it 'should combine multiple yaml files into a mash' do
         | 
| 13 | 
            -
                    Remy.configure { |config| config.yml_files = ['fixtures/foo.yml', 'fixtures/bar.yml'].map { |f| File.join(File.dirname(__FILE__), f) } }
         | 
| 14 | 
            -
                    subject.configuration.yml_files.should == ['fixtures/foo.yml', 'fixtures/bar.yml'].map { |f| File.join(File.dirname(__FILE__), f) }
         | 
| 15 | 
            -
                    subject.configuration.blah.should == 'bar'  # From foo.yml
         | 
| 16 | 
            -
                    subject.configuration.baz.should == 'baz'   # From bar.yml
         | 
| 17 | 
            -
                    subject.configuration.colors.to_hash.symbolize_keys.should == {:blue => 'blue', :green => 'green', :red => 'red'}
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                  it 'should return an empty array if there are no yml files' do
         | 
| 21 | 
            -
                    Remy.configure {}
         | 
| 22 | 
            -
                    subject.configuration.yml_files.should == []
         | 
| 23 | 
            -
                  end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                  it 'should not raise an error if there is a file does does not exist' do
         | 
| 26 | 
            -
                    expect do
         | 
| 27 | 
            -
                      Remy.configure { |config| config.yml_files = ['does_not_exist.yml'] }
         | 
| 28 | 
            -
                    end.should_not raise_error
         | 
| 29 | 
            -
                  end
         | 
| 30 | 
            -
                end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                describe "cookbooks path" do
         | 
| 33 | 
            -
                  it "should work if a single cookbook path is specified" do
         | 
| 34 | 
            -
                    Remy.configure { |config| config.cookbook_path = 'cookbooks' }
         | 
| 35 | 
            -
                    subject.configuration.cookbook_path.should == ['cookbooks']
         | 
| 36 | 
            -
                  end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                  it "should work if multiple cookbook paths are specified" do
         | 
| 39 | 
            -
                    Remy.configure { |config| config.cookbook_path = ['cookbooks1', 'cookbooks2'] }
         | 
| 40 | 
            -
                    subject.configuration.cookbook_path.should == ['cookbooks1', 'cookbooks2']
         | 
| 41 | 
            -
                  end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                  it "should return an empty array if no cookbook paths are specified" do
         | 
| 44 | 
            -
                    Remy.configure {}
         | 
| 45 | 
            -
                    subject.configuration.cookbook_path.should == []
         | 
| 46 | 
            -
                  end
         | 
| 47 | 
            -
                end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                describe "specs path" do
         | 
| 50 | 
            -
                  it "should work if a single spec path is specified" do
         | 
| 51 | 
            -
                    Remy.configure { |config| config.spec_path = 'specs' }
         | 
| 52 | 
            -
                    subject.configuration.spec_path.should == ['specs']
         | 
| 53 | 
            -
                  end
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                  it "should work if multiple spec paths are specified" do
         | 
| 56 | 
            -
                    Remy.configure { |config| config.spec_path = ['specs1', 'specs2'] }
         | 
| 57 | 
            -
                    subject.configuration.spec_path.should == ['specs1', 'specs2']
         | 
| 58 | 
            -
                  end
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                  it "should return an empty array if no spec paths are specified" do
         | 
| 61 | 
            -
                    Remy.configure {}
         | 
| 62 | 
            -
                    subject.configuration.spec_path.should == []
         | 
| 63 | 
            -
                  end
         | 
| 64 | 
            -
                end
         | 
| 65 | 
            -
             | 
| 66 | 
            -
                describe "roles path" do
         | 
| 67 | 
            -
                  it "should work if a single file is specified" do
         | 
| 68 | 
            -
                    Remy.configure { |config| config.roles_path = 'roles' }
         | 
| 69 | 
            -
                    subject.configuration.roles_path.should == ['roles']
         | 
| 70 | 
            -
                  end
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                  it "should work if multiple files are specified" do
         | 
| 73 | 
            -
                    Remy.configure { |config| config.roles_path = ['roles1', 'roles2'] }
         | 
| 74 | 
            -
                    subject.configuration.roles_path.should == ['roles1', 'roles2']
         | 
| 75 | 
            -
                  end
         | 
| 76 | 
            -
             | 
| 77 | 
            -
                  it "should return an empty array if no roles paths are specified" do
         | 
| 78 | 
            -
                    Remy.configure {}
         | 
| 79 | 
            -
                    subject.configuration.roles_path.should == []
         | 
| 80 | 
            -
                  end
         | 
| 81 | 
            -
                end
         | 
| 82 | 
            -
             | 
| 83 | 
            -
                describe "node attributes" do
         | 
| 84 | 
            -
                  it "should merge in the other node attributes from the hash" do
         | 
| 85 | 
            -
                    Remy.configure { |config| config.node_attributes = {:another_node_attribute => 'red'} }
         | 
| 86 | 
            -
                    subject.configuration.another_node_attribute.should == 'red'
         | 
| 87 | 
            -
                  end
         | 
| 88 | 
            -
             | 
| 89 | 
            -
                  it "should not blow up if there no node attributes are specified" do
         | 
| 90 | 
            -
                    lambda { Remy.configure {} }.should_not raise_error
         | 
| 91 | 
            -
                  end
         | 
| 92 | 
            -
                end
         | 
| 93 | 
            -
             | 
| 94 | 
            -
                describe "#remote_chef_dir" do
         | 
| 95 | 
            -
                  it "should default to /var/chef if no option is given" do
         | 
| 96 | 
            -
                    subject.configuration.remote_chef_dir.should == '/var/chef'
         | 
| 97 | 
            -
                  end
         | 
| 98 | 
            -
             | 
| 99 | 
            -
                  it "should be able to be overriden" do
         | 
| 100 | 
            -
                    Remy.configure { |config| config.remote_chef_dir = '/foo/shef' }
         | 
| 101 | 
            -
                    subject.configuration.remote_chef_dir.should == '/foo/shef'
         | 
| 102 | 
            -
                  end
         | 
| 103 | 
            -
                end
         | 
| 104 | 
            -
              end
         | 
| 105 4 |  | 
| 106 5 | 
             
              describe '.to_json' do
         | 
| 107 6 | 
             
                it 'should create the expected JSON' do
         | 
| 108 | 
            -
                  Remy.configure {}
         | 
| 7 | 
            +
                  Remy::Config::Chef.configure {}
         | 
| 109 8 | 
             
                  lambda do
         | 
| 110 9 | 
             
                    JSON.parse(subject.to_json)
         | 
| 111 10 | 
             
                  end.should_not raise_error
         | 
| 112 11 | 
             
                end
         | 
| 113 12 | 
             
              end
         | 
| 114 13 |  | 
| 115 | 
            -
              context 'with a configuration' do
         | 
| 116 | 
            -
                before do
         | 
| 117 | 
            -
                  Remy.configure do |config|
         | 
| 118 | 
            -
                    config.yml_files = ['fixtures/chef.yml'].map { |f| File.join(File.dirname(__FILE__), f) }
         | 
| 119 | 
            -
                  end
         | 
| 120 | 
            -
                end
         | 
| 121 | 
            -
             | 
| 122 | 
            -
                describe '.servers' do
         | 
| 123 | 
            -
                  it 'returns all servers' do
         | 
| 124 | 
            -
                    Remy.servers.size.should == 3
         | 
| 125 | 
            -
                    Remy.servers['db.sharespost.com'].color.should == 'yellow'
         | 
| 126 | 
            -
                  end
         | 
| 127 | 
            -
                  it 'should return servers that match the criteria (using standard Enumerable methods)' do
         | 
| 128 | 
            -
                    Remy.servers.select { |(k, v)| v.rails_env == 'demo' }.map(&:first).should == ['web.sharespost.com', 'demo.sharespost.com']
         | 
| 129 | 
            -
                  end
         | 
| 130 | 
            -
                end
         | 
| 131 | 
            -
             | 
| 132 | 
            -
                describe '.find_servers' do
         | 
| 133 | 
            -
                  it 'should return servers that match the criteria' do
         | 
| 134 | 
            -
                    Remy.find_servers(:rails_env => 'demo').keys.should == ['web.sharespost.com', 'demo.sharespost.com']
         | 
| 135 | 
            -
                  end
         | 
| 136 | 
            -
             | 
| 137 | 
            -
                  it 'should return all servers if there are no criteria' do
         | 
| 138 | 
            -
                    Remy.find_servers.keys.should == ['db.sharespost.com', 'web.sharespost.com', 'demo.sharespost.com']
         | 
| 139 | 
            -
                  end
         | 
| 140 | 
            -
             | 
| 141 | 
            -
                  it 'should return servers that match the criteria (with multiple criteria)' do
         | 
| 142 | 
            -
                    Remy.find_servers(:rails_env => 'demo', :color => 'blue').keys.should == ['web.sharespost.com']
         | 
| 143 | 
            -
                  end
         | 
| 144 | 
            -
             | 
| 145 | 
            -
                  it "should return nil if there are no servers specified in the yaml file" do
         | 
| 146 | 
            -
                    Remy.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/hello_world_chef.yml') }
         | 
| 147 | 
            -
                    Remy.find_servers(:rails_env => 'demo').should be_nil
         | 
| 148 | 
            -
                  end
         | 
| 149 | 
            -
                end
         | 
| 150 | 
            -
             | 
| 151 | 
            -
                describe '.find_server' do
         | 
| 152 | 
            -
                  it 'should return the first server that matchs the criteria' do
         | 
| 153 | 
            -
                    Remy.find_server(:rails_env => 'demo').keys.should == ['web.sharespost.com']
         | 
| 154 | 
            -
                  end
         | 
| 155 | 
            -
             | 
| 156 | 
            -
                  it 'should return nil if there are no servers specifie in the yml files' do
         | 
| 157 | 
            -
                    Remy.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/hello_world_chef.yml') }
         | 
| 158 | 
            -
                    Remy.find_server(:rails_env => 'demo').should be_nil
         | 
| 159 | 
            -
                  end
         | 
| 160 | 
            -
                end
         | 
| 161 | 
            -
             | 
| 162 | 
            -
                describe '.find_server_config' do
         | 
| 163 | 
            -
                  it 'should return the first server that matchs the criteria' do
         | 
| 164 | 
            -
                    Remy.find_server_config(:rails_env => 'demo').to_hash.should == {"color"=>"blue", "recipes"=>["recipe[hello_world]"], "rails_env"=>"demo", "ip_address"=> IP_ADDRESS}
         | 
| 165 | 
            -
                  end
         | 
| 166 | 
            -
             | 
| 167 | 
            -
                  it 'should return nil if no server info is found' do
         | 
| 168 | 
            -
                    Remy.find_server_config(:rails_env => 'foo').should be_nil
         | 
| 169 | 
            -
                  end
         | 
| 170 | 
            -
             | 
| 171 | 
            -
                  it 'should return nil if there are no servers in the yml files' do
         | 
| 172 | 
            -
                    Remy.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/hello_world_chef.yml') }
         | 
| 173 | 
            -
                    Remy.find_server_config(:rails_env => 'foo').should be_nil
         | 
| 174 | 
            -
                  end
         | 
| 175 | 
            -
                end
         | 
| 176 | 
            -
             | 
| 177 | 
            -
                describe '.find_server_config_by_name' do
         | 
| 178 | 
            -
                  it 'should return the server that matches the name' do
         | 
| 179 | 
            -
                    Remy.find_server_config_by_name('db.sharespost.com').to_hash.should == {"encoding"=>"utf8", "adapter"=>"mysql2", "color"=>"yellow", "rails_env"=>"production", "ip_address"=>"51.51.51.51"}
         | 
| 180 | 
            -
                  end
         | 
| 181 | 
            -
             | 
| 182 | 
            -
                  it 'should return nil if theres no server that matches the name' do
         | 
| 183 | 
            -
                    Remy.find_server_config_by_name('db.asdfjkll.com').should be_nil
         | 
| 184 | 
            -
                  end
         | 
| 185 | 
            -
             | 
| 186 | 
            -
                  it 'should return nil (and not blow up) if there are no servers in the yml files' do
         | 
| 187 | 
            -
                    Remy.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/hello_world_chef.yml') }
         | 
| 188 | 
            -
                    Remy.find_server_config_by_name('db.asdfjkll.com').should be_nil
         | 
| 189 | 
            -
                  end
         | 
| 190 | 
            -
             | 
| 191 | 
            -
                  it 'should return nil (and not blow up) if there is no Remy configuration' do
         | 
| 192 | 
            -
                    Remy.instance_variable_set('@configuration', nil)
         | 
| 193 | 
            -
                    Remy.find_server_config_by_name('db.asdfjkll.com').should be_nil
         | 
| 194 | 
            -
                  end
         | 
| 195 | 
            -
                end
         | 
| 196 | 
            -
             | 
| 197 | 
            -
                describe '.cloud_configuration' do
         | 
| 198 | 
            -
                  it 'should return nil if it has not been specified in the yml files' do
         | 
| 199 | 
            -
                    Remy.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/hello_world_chef.yml') }
         | 
| 200 | 
            -
                    Remy.cloud_configuration.should be_nil
         | 
| 201 | 
            -
                  end
         | 
| 202 | 
            -
             | 
| 203 | 
            -
                  it 'should return the cloud configuration options if present in the yml files' do
         | 
| 204 | 
            -
                    Remy.cloud_configuration.should == Hashie::Mash.new(
         | 
| 205 | 
            -
                      :cloud_api_key => 'abcdefg12345',
         | 
| 206 | 
            -
                      :cloud_provider => 'Rackspace',
         | 
| 207 | 
            -
                      :cloud_username => 'sharespost',
         | 
| 208 | 
            -
                      :flavor_id => 4,
         | 
| 209 | 
            -
                      :image_id => 49,
         | 
| 210 | 
            -
                      :server_name => 'new-server.somedomain.com')
         | 
| 211 | 
            -
             | 
| 212 | 
            -
                  end
         | 
| 213 | 
            -
             | 
| 214 | 
            -
                  it 'should return nil if there is currently no Remy configuration' do
         | 
| 215 | 
            -
                    Remy.instance_variable_set('@configuration', nil)
         | 
| 216 | 
            -
                    Remy.cloud_configuration.should be_nil
         | 
| 217 | 
            -
                  end
         | 
| 218 | 
            -
                end
         | 
| 219 | 
            -
             | 
| 220 | 
            -
                describe '.bootstrap' do
         | 
| 221 | 
            -
                  it 'should return nil if it has not been specified in the yml files' do
         | 
| 222 | 
            -
                    Remy.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/hello_world_chef.yml') }
         | 
| 223 | 
            -
                    Remy.bootstrap.should be_nil
         | 
| 224 | 
            -
                  end
         | 
| 225 | 
            -
             | 
| 226 | 
            -
                  it 'should return the bootstrap options if present in the yml files' do
         | 
| 227 | 
            -
                    Remy.bootstrap.should == Hashie::Mash.new(
         | 
| 228 | 
            -
                      :ruby_version => '1.9.2',
         | 
| 229 | 
            -
                      :gems => {
         | 
| 230 | 
            -
                          :chef => '0.10.4',
         | 
| 231 | 
            -
                          :rspec => '2.7.0',
         | 
| 232 | 
            -
                          :bundler => '1.0.21'
         | 
| 233 | 
            -
                      })
         | 
| 234 | 
            -
                  end
         | 
| 235 | 
            -
             | 
| 236 | 
            -
                  it 'should return nil if there is currently no Remy configuration' do
         | 
| 237 | 
            -
                    Remy.instance_variable_set('@configuration', nil)
         | 
| 238 | 
            -
                    Remy.bootstrap.should be_nil
         | 
| 239 | 
            -
                  end
         | 
| 240 | 
            -
                end
         | 
| 241 | 
            -
              end
         | 
| 242 14 |  | 
| 243 15 | 
             
              describe 'support for the rake tasks' do
         | 
| 244 16 | 
             
                before do
         | 
| 245 | 
            -
                  Remy.configure do |config|
         | 
| 17 | 
            +
                  Remy::Config::Chef.configure do |config|
         | 
| 246 18 | 
             
                    config.yml_files = ['fixtures/foo.yml', 'fixtures/bar.yml', 'fixtures/chef.yml'].map { |f| File.join(File.dirname(__FILE__), f) }
         | 
| 247 19 | 
             
                  end
         | 
| 248 20 | 
             
                end
         | 
| 249 21 |  | 
| 250 22 | 
             
                describe '.convert_properties_to_hash' do
         | 
| 251 23 | 
             
                  it 'should convert properties to a hash' do
         | 
| 252 | 
            -
                    Remy.send(:convert_properties_to_hash, ' foo:bar blah:blech').should == {:foo => 'bar', :blah => 'blech'}
         | 
| 24 | 
            +
                    Remy::Config::Chef.send(:convert_properties_to_hash, ' foo:bar blah:blech').should == {:foo => 'bar', :blah => 'blech'}
         | 
| 253 25 | 
             
                  end
         | 
| 254 26 |  | 
| 255 27 | 
             
                  it 'should convert a blank string to nil' do
         | 
| 256 | 
            -
                    Remy.send(:convert_properties_to_hash, '  ').should be_nil
         | 
| 28 | 
            +
                    Remy::Config::Chef.send(:convert_properties_to_hash, '  ').should be_nil
         | 
| 257 29 | 
             
                  end
         | 
| 258 30 |  | 
| 259 31 | 
             
                  it 'should return nil if the string is not in property format' do
         | 
| 260 | 
            -
                    Remy.send(:convert_properties_to_hash, 'demo.sharespost.com').should be_nil
         | 
| 32 | 
            +
                    Remy::Config::Chef.send(:convert_properties_to_hash, 'demo.sharespost.com').should be_nil
         | 
| 261 33 | 
             
                  end
         | 
| 262 34 | 
             
                end
         | 
| 263 35 |  | 
| 264 36 | 
             
                describe '.determine_ip_addresses_for_remy_run' do
         | 
| 265 37 | 
             
                  context 'top level ip address is present in the yml files' do
         | 
| 266 38 | 
             
                    before do
         | 
| 267 | 
            -
                      Remy.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/hello_world_chef.yml') }
         | 
| 39 | 
            +
                      Remy::Config::Chef.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/hello_world_chef.yml') }
         | 
| 268 40 | 
             
                    end
         | 
| 269 41 |  | 
| 270 42 | 
             
                    it 'should return the ip address in the yml file if no ip address is given and an ip is present in the yml files' do
         | 
| 271 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, '').should == [ | 
| 43 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, '').should == [IP_ADDRESS_OF_REMY_TEST]
         | 
| 272 44 | 
             
                    end
         | 
| 273 45 |  | 
| 274 46 | 
             
                    it 'should handle receiving no parameters' do
         | 
| 275 47 | 
             
                      expect do
         | 
| 276 | 
            -
                        Remy.send(:determine_ip_addresses_for_remy_run, nil).should == [ | 
| 48 | 
            +
                        Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, nil).should == [IP_ADDRESS_OF_REMY_TEST]
         | 
| 277 49 | 
             
                      end.to_not raise_error
         | 
| 278 50 | 
             
                    end
         | 
| 279 51 | 
             
                  end
         | 
| 280 52 |  | 
| 281 53 | 
             
                  context 'no top level ip address is present in the yml files' do
         | 
| 282 54 | 
             
                    before do
         | 
| 283 | 
            -
                      Remy.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/foo.yml') }
         | 
| 55 | 
            +
                      Remy::Config::Chef.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/foo.yml') }
         | 
| 284 56 | 
             
                    end
         | 
| 285 57 |  | 
| 286 58 | 
             
                    it 'should return nothing if no ip address is given and no top-level ip address is in the yml files' do
         | 
| 287 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, '').should == []
         | 
| 59 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, '').should == []
         | 
| 288 60 | 
             
                    end
         | 
| 289 61 |  | 
| 290 62 | 
             
                    it 'should return the ip address if an ip address is given and no top-level ip address is in the yml files' do
         | 
| 291 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, '1.2.3.4').should == ['1.2.3.4']
         | 
| 63 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, '1.2.3.4').should == ['1.2.3.4']
         | 
| 292 64 | 
             
                    end
         | 
| 293 65 |  | 
| 294 66 | 
             
                    it 'should handle receiving no parameters' do
         | 
| 295 67 | 
             
                      expect do
         | 
| 296 | 
            -
                        Remy.send(:determine_ip_addresses_for_remy_run, nil).should == []
         | 
| 68 | 
            +
                        Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, nil).should == []
         | 
| 297 69 | 
             
                      end.to_not raise_error
         | 
| 298 70 | 
             
                    end
         | 
| 299 71 | 
             
                  end
         | 
| 300 72 |  | 
| 301 73 | 
             
                  context ':servers section present in the yml files' do
         | 
| 302 74 | 
             
                    before do
         | 
| 303 | 
            -
                      Remy.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/chef.yml') }
         | 
| 75 | 
            +
                      Remy::Config::Chef.configure { |config| config.yml_files = File.join(File.dirname(__FILE__), 'fixtures/chef.yml') }
         | 
| 304 76 | 
             
                    end
         | 
| 305 77 |  | 
| 306 78 | 
             
                    it 'should return an ip address if an ip address is given as property value (this IP address is not in the :servers section of the yml files)' do
         | 
| 307 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, 'ip_address:1.2.3.4').should == ['1.2.3.4']
         | 
| 79 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, 'ip_address:1.2.3.4').should == ['1.2.3.4']
         | 
| 308 80 | 
             
                    end
         | 
| 309 81 |  | 
| 310 82 | 
             
                    it 'should return the ip address if the ip address was found in the :servers section of the yml files' do
         | 
| 311 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, 'ip_address:52.52.52.52').should == ['52.52.52.52']
         | 
| 83 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, 'ip_address:52.52.52.52').should == ['52.52.52.52']
         | 
| 312 84 | 
             
                    end
         | 
| 313 85 |  | 
| 314 86 | 
             
                    it 'should return the IP address - the IP address is specified, but is not found in the servers section in the yml files' do
         | 
| 315 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, '1.2.3.4').should == ['1.2.3.4']
         | 
| 87 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, '1.2.3.4').should == ['1.2.3.4']
         | 
| 316 88 | 
             
                    end
         | 
| 317 89 |  | 
| 318 90 | 
             
                    it 'should return the IP address - the IP address is specified, and is found in the servers section in the yml files' do
         | 
| 319 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, '52.52.52.52').should == ['52.52.52.52']
         | 
| 91 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, '52.52.52.52').should == ['52.52.52.52']
         | 
| 320 92 | 
             
                    end
         | 
| 321 93 |  | 
| 322 94 | 
             
                    it 'should be able to find servers by name from the :servers section of the yml file' do
         | 
| 323 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, 'demo.sharespost.com').should == ['52.52.52.52']
         | 
| 95 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, 'demo.sharespost.com').should == ['52.52.52.52']
         | 
| 324 96 | 
             
                    end
         | 
| 325 97 |  | 
| 326 98 | 
             
                    it 'should be able to find servers by multiple names' do
         | 
| 327 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, ' demo.sharespost.com  db.sharespost.com ').should == ['52.52.52.52', '51.51.51.51']
         | 
| 99 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, ' demo.sharespost.com  db.sharespost.com ').should == ['52.52.52.52', '51.51.51.51']
         | 
| 328 100 | 
             
                    end
         | 
| 329 101 |  | 
| 330 102 | 
             
                    it 'should be able to find servers by multiple names and ip addresses' do
         | 
| 331 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, ' demo.sharespost.com   51.51.51.51').should == ['52.52.52.52', '51.51.51.51']
         | 
| 103 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, ' demo.sharespost.com   51.51.51.51').should == ['52.52.52.52', '51.51.51.51']
         | 
| 332 104 | 
             
                    end
         | 
| 333 105 |  | 
| 334 106 | 
             
                    it 'should be able to find all of the servers from the yml files that match certain attributes' do
         | 
| 335 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, 'rails_env:demo').should == [ | 
| 336 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, 'rails_env:demo color:green').should == ['52.52.52.52']
         | 
| 337 | 
            -
                      Remy.send(:determine_ip_addresses_for_remy_run, 'rails_env:demo color:yellow').should == []
         | 
| 107 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, 'rails_env:demo').should == [IP_ADDRESS_OF_REMY_TEST, '52.52.52.52']
         | 
| 108 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, 'rails_env:demo color:green').should == ['52.52.52.52']
         | 
| 109 | 
            +
                      Remy::Config::Chef.send(:determine_ip_addresses_for_remy_run, 'rails_env:demo color:yellow').should == []
         | 
| 338 110 | 
             
                    end
         | 
| 339 111 | 
             
                  end
         | 
| 340 112 | 
             
                end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -3,14 +3,17 @@ ENV["RAILS_ENV"] ||= 'test' | |
| 3 3 | 
             
            require 'rubygems'
         | 
| 4 4 | 
             
            require 'bundler/setup'
         | 
| 5 5 | 
             
            require 'active_support'
         | 
| 6 | 
            -
            require 'mocha'
         | 
| 7 6 | 
             
            require 'json'
         | 
| 8 7 | 
             
            require 'remy'
         | 
| 9 8 |  | 
| 10 9 | 
             
            Dir[File.join(File.dirname(__FILE__), 'spec', 'support', '**' '*.rb')].each { |f| require f }
         | 
| 11 10 |  | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 11 | 
            +
            IP_ADDRESS_OF_REMY_TEST = '108.166.98.115'
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            def chef_fixture(file)
         | 
| 14 | 
            +
              File.join(File.dirname(__FILE__), 'fixtures/' + file)
         | 
| 14 15 | 
             
            end
         | 
| 15 16 |  | 
| 16 | 
            -
             | 
| 17 | 
            +
            def project_root
         | 
| 18 | 
            +
              File.expand_path(File.join(File.dirname(__FILE__), '../'))
         | 
| 19 | 
            +
            end
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'rake'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe 'background.rake' do
         | 
| 5 | 
            +
              before do
         | 
| 6 | 
            +
                Rake.application.rake_require "tasks/remy"
         | 
| 7 | 
            +
                Rake::Task.define_task(:environment)
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it 'should run the task to save the JSON file from the Chef yml config files' do
         | 
| 11 | 
            +
                Remy::Config::Chef.should_receive(:save_node_json).with('my/path/to/node.json')
         | 
| 12 | 
            +
                Rake.application['remy:save_node_json'].invoke('my/path/to/node.json')
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         |