Невозможно заготовить частичный_поиск для chefspec

Я пишу кулинарную книгу, которая выполняет частичный поиск, чтобы найти атрибут на других узлах. Мой тест chefspec не проходит с ошибкой ERROR: Connection refused connecting to localhost:443, Поиск создается как показано ниже:

describe 'my_recipe::default' do
  let(:test1_node) do
    stub_node('test1.com', platform: 'redhat', version: '6.3') do |node|
      node.set['my_recipe']['id'] = 101
      node.set['chef_environment'] = 'production'
    end
  end

  let(:test2_node) do
    stub_node('test2.com', platform: 'redhat', version: '6.3') do |node|
      node.set['my_recipe']['id'] = 102
      node.set['chef_environment'] = 'production'
    end
  end

  before do
    stub_search("node", "my_recipe:* AND chef_environment:production").and_return([])
  end
  let(:chef_run) do
    ChefSpec::Runner.new do |node|
      env = Chef::Environment.new
      env.name 'production'

      node.stub(:chef_environment).and_return(env.name)
      Chef::Environment.stub(:load).and_return(env)
    end.converge(described_recipe)
  end
  it 'updates the file' do
    stub_search("node", "my_recipe:* AND chef_environment:production").and_return([test1_node,test2_node])
    expect(chef_run).to create_template(/conf/my_recipe.cfg")
  end
end

Я неправильно окуриваю это?

1 ответ

Решение

stub_search для заглушки поиска шеф-повара. Частичный поиск поддерживается кулинарной книгой и поэтому не является частью ядра Chef. Частичный поиск использует другую конечную точку API и использует POST вместо GET для протокола.

Вам нужно будет заглушить API-вызовы Chef для частичного поиска. stub_search не будет работать.

Другие вопросы по тегам