Когда я запускаю мой блок тестового примера (написанный в ChefSpec) я получаю следующее сообщение об ошибке:ChefSpec не смогли найти поваренную
Chef::Exceptions::CookbookNotFound: Cookbook azuredns not found. If you're loading azuredns from another cook book, make sure you configure the dependency in your metadata
Ниже мой файл файл спецификации, рецепт файлов и метаданных
azuredns/спецификации/get_azure_token_spec.rb
require 'chefspec'
require 'rest-client'
describe 'azuredns::get_azure_token' do
let(:chef_run) do
# Step into the provider
runner = ChefSpec::SoloRunner.new(step_into: ['azuredns_token'])
# Read test data from a json file
file_path = File.expand_path('test_data.json', __dir__)
file = File.open(file_path)
contents = file.read
node_attr = JSON.parse(contents)
# Load test data into node object
runner.node.consume_attributes(node_attr)
runner.converge(described_recipe)
end
before(:each) do
# Mock post method of RestClient
allow(RestClient).to receive(:post)
.and_return({ access_token: 'i-am-a-token' }.to_json)
end
it 'retrieves token' do
expect(chef_run).to retrieve_azuredns_token('azure_token')
end
it 'varifies the expected value of azure_rest_token' do
expect(chef_run.node['azure_rest_token']).to eq('Bearer i-am-a-token')
end
it 'does not retrieve token due to incorrect resource name' do
expect(chef_run).to_not retrieve_azuredns_token('azure_token1')
end
it 'raises exception due to error in response' do
# Mock post method of RestClient
allow(RestClient).to receive(:post)
.and_return({ error: 'invalid_grant' }.to_json)
expect { chef_run }.to raise_error(Exception)
end
end
azuredns/рецепт/get_azure_token.rb
require 'rest_client'
require 'json'
cloud_name = node['workorder']['cloud']['ciName']
cloud = node['workorder']['services']['dns'][cloud_name]
dns_attributes = cloud['ciAttributes']
# Establish connection and get a security token
token = azuredns_token 'azure_token' do
tenant_id dns_attributes['tenant_id']
client_id dns_attributes['client_id']
client_secret dns_attributes['client_secret']
end
token.run_action(:retrieve)
azuredns/metadata.rb
name 'Azuredns'
maintainer 'Shaffan'
maintainer_email '[email protected]'
license 'Apache License, Version 2.0'
description 'Installs/Configures Azure DNS'
version '0.1.0'
depends 'azure'
Пожалуйста, помогите!
Это наше соглашение о кодировании, чтобы сохранить первый капитал письма. – Shaffan
, когда я меняю свой тестовый пример следующим образом: описать «Azuredns :: get_azure_token» Я получаю эту ошибку: «Нет ресурса или метода azuredns_token в get_azure_token.rb recipe» То есть он не может найти мой пользовательский ресурс (LWRP) – Shaffan
Да, потому что вам придется использовать 'Azuredns_token'. Это * все * чувствительно к регистру, поэтому вы должны исправить это имя. – coderanger