resource_upstream_spec.rb 4.0 KB

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