2017-02-20 8 views
2

У меня есть следующий тест в serverspec рецепта - хэш только весь ресурс, как это описано в Chef (я надеюсь трубы, что в каком-то момент)с помощью переменных в командном ресурсе в serverspec

# Test Folder Permissons 
# hash taken from attributes 
share = { 
    "name" => "example", 
    "sharepath" => "d:/example", 
    "fullshareaccess" => "everyone", 
    "ntfsfullcontrol" => "u-dom1/s37374", 
    "ntfsmodifyaccess" => "", 
    "ntfsreadaccess" => "everyone" 
    } 

# Explicitly test individual permissions (base on NTFSSecurity module) 
describe command ('get-ntfsaccess d:/example -account u-dom1\s37374') do 
    its(:stdout) { should include "FullControl" } 
end 

Проблема, с которой я сталкиваюсь, заключается в получении переменной в ресурсе команды - я новичок в рубине и задаюсь вопросом, не пропал ли я что-то.

Я бы хотел, чтобы вызов ресурса команды принимал переменную вместо жесткого кодирования.

например.

describe command ('get-ntfsaccess d:/example -account "#{ntfsfullcontrol}"') do 
    its(:stdout) { should include "FullControl" } 
end 

мне удалось использовать переменные в тесте :stdout, но не может заставить их работать в командной строке.

любая помощь ценится

ответ

1

Вы можете использовать переменную из вашего хэша внутри теста Serverspec, как это (с использованием современных RSpec 3):

describe command ("get-ntfsaccess #{share['sharepath']} -account #{share['ntfsfullcontrol']") do 
    its(:stdout) { is_expected.to include "FullControl" } 
end 

Синтаксис "#{}" будет интерполировать переменную внутри строки и синтаксис hash[key] захватит значение из вашего хэша.

Вы также можете перебирать свой хэш, чтобы выполнить больше проверок, как это:

share.each |key, value| do 
    describe command("test with #{key} #{value}") do 
    # first loop: test with name example 
    its(:stdout) { is_expected.to match(/foo/) } 
    end 
end 
+0

Благодаря Matt, что работал лакомство - У меня были некоторые проблемы синтаксиса вы очистили красиво - на проклевывания хэш в от шеф-повара прямо сейчас , –

Смежные вопросы