resource_upstream_spec.rb 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. require 'spec_helper'
  2. describe 'nginx::resource::upstream' do
  3. let :title do
  4. 'upstream-test'
  5. end
  6. let :default_params do
  7. {
  8. :members => ['test'],
  9. }
  10. end
  11. let :pre_condition do
  12. [
  13. 'include ::nginx::config',
  14. ]
  15. end
  16. let :pre_condition do
  17. [
  18. 'include ::nginx::config',
  19. ]
  20. end
  21. describe 'os-independent items' do
  22. describe 'basic assumptions' do
  23. let :params do default_params end
  24. it { is_expected.to contain_concat("/etc/nginx/conf.d/#{title}-upstream.conf") }
  25. it { is_expected.to contain_concat__fragment("#{title}_upstream_header").with_content(/upstream #{title}/) }
  26. it {
  27. is_expected.to contain_concat__fragment("#{title}_upstream_header").with(
  28. {
  29. 'target' => "/etc/nginx/conf.d/#{title}-upstream.conf",
  30. 'order' => 10,
  31. }
  32. )}
  33. it {
  34. is_expected.to contain_concat__fragment("#{title}_upstream_members").with(
  35. {
  36. 'target' => "/etc/nginx/conf.d/#{title}-upstream.conf",
  37. 'order' => 50,
  38. }
  39. )}
  40. it {
  41. is_expected.to contain_concat__fragment("#{title}_upstream_footer").with(
  42. {
  43. 'target' => "/etc/nginx/conf.d/#{title}-upstream.conf",
  44. 'order' => 90,
  45. }).with_content("}\n")
  46. }
  47. end
  48. describe "upstream.conf template content" do
  49. [
  50. {
  51. :title => 'should contain ordered prepended directives',
  52. :attr => 'upstream_cfg_prepend',
  53. :fragment => 'header',
  54. :value => {
  55. 'test3' => 'test value 3',
  56. 'test6' => {'subkey1' => ['subvalue1', 'subvalue2']},
  57. 'test1' => 'test value 1',
  58. 'test2' => 'test value 2',
  59. 'test5' => {'subkey1' => 'subvalue1'},
  60. 'test4' => ['test value 1', 'test value 2'],
  61. },
  62. :match => [
  63. ' test1 test value 1;',
  64. ' test2 test value 2;',
  65. ' test3 test value 3;',
  66. ' test4 test value 1;',
  67. ' test4 test value 2;',
  68. ' test5 subkey1 subvalue1;',
  69. ' test6 subkey1 subvalue1;',
  70. ' test6 subkey1 subvalue2;',
  71. ],
  72. },
  73. {
  74. :title => 'should set server',
  75. :attr => 'members',
  76. :fragment => 'members',
  77. :value => %W( test3 test1 test2 ),
  78. :match => [
  79. ' server test3 fail_timeout=10s;',
  80. ' server test1 fail_timeout=10s;',
  81. ' server test2 fail_timeout=10s;',
  82. ],
  83. },
  84. ].each do |param|
  85. context "when #{param[:attr]} is #{param[:value]}" do
  86. let :params do default_params.merge({ param[:attr].to_sym => param[:value] }) end
  87. it { is_expected.to contain_concat("/etc/nginx/conf.d/#{title}-upstream.conf").with_mode('0644') }
  88. it { is_expected.to contain_concat__fragment("#{title}_upstream_#{param[:fragment]}") }
  89. it param[:title] do
  90. lines = catalogue.resource('concat::fragment', "#{title}_upstream_#{param[:fragment]}").send(:parameters)[:content].split("\n")
  91. expect(lines & Array(param[:match])).to eq(Array(param[:match]))
  92. Array(param[:notmatch]).each do |item|
  93. is_expected.to contain_concat__fragment("#{title}_upstream_#{param[:fragment]}").without_content(item)
  94. end
  95. end
  96. end
  97. end
  98. context 'when ensure => absent' do
  99. let :params do default_params.merge(
  100. {
  101. :ensure => 'absent'
  102. }
  103. ) end
  104. it { is_expected.to contain_concat("/etc/nginx/conf.d/#{title}-upstream.conf").with_ensure('absent') }
  105. end
  106. end
  107. end
  108. end