resource_upstream_spec.rb 3.7 KB

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