apt_key_spec.rb 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. require 'spec_helper'
  2. require 'puppet'
  3. describe Puppet::Type::type(:apt_key) do
  4. context 'only namevar 32bit key id' do
  5. let(:resource) { Puppet::Type.type(:apt_key).new(
  6. :id => '4BD6EC30'
  7. )}
  8. it 'id is set' do
  9. resource[:id].should eq '4BD6EC30'
  10. end
  11. it 'name is set to id' do
  12. resource[:name].should eq '4BD6EC30'
  13. end
  14. it 'keyserver is default' do
  15. resource[:server].should eq :'keyserver.ubuntu.com'
  16. end
  17. it 'source is not set' do
  18. resource[:source].should eq nil
  19. end
  20. it 'content is not set' do
  21. resource[:content].should eq nil
  22. end
  23. end
  24. context 'with a lowercase 32bit key id' do
  25. let(:resource) { Puppet::Type.type(:apt_key).new(
  26. :id => '4bd6ec30'
  27. )}
  28. it 'id is set' do
  29. resource[:id].should eq '4BD6EC30'
  30. end
  31. end
  32. context 'with a 64bit key id' do
  33. let(:resource) { Puppet::Type.type(:apt_key).new(
  34. :id => 'FFFFFFFF4BD6EC30'
  35. )}
  36. it 'id is set' do
  37. resource[:id].should eq '4BD6EC30'
  38. end
  39. end
  40. context 'with a 0x formatted key id' do
  41. let(:resource) { Puppet::Type.type(:apt_key).new(
  42. :id => '0x4BD6EC30'
  43. )}
  44. it 'id is set' do
  45. resource[:id].should eq '4BD6EC30'
  46. end
  47. end
  48. context 'with a 0x formatted lowercase key id' do
  49. let(:resource) { Puppet::Type.type(:apt_key).new(
  50. :id => '0x4bd6ec30'
  51. )}
  52. it 'id is set' do
  53. resource[:id].should eq '4BD6EC30'
  54. end
  55. end
  56. context 'with a 0x formatted 64bit key id' do
  57. let(:resource) { Puppet::Type.type(:apt_key).new(
  58. :id => '0xFFFFFFFF4BD6EC30'
  59. )}
  60. it 'id is set' do
  61. resource[:id].should eq '4BD6EC30'
  62. end
  63. end
  64. context 'with source' do
  65. let(:resource) { Puppet::Type.type(:apt_key).new(
  66. :id => '4BD6EC30',
  67. :source => 'http://apt.puppetlabs.com/pubkey.gpg'
  68. )}
  69. it 'source is set to the URL' do
  70. resource[:source].should eq 'http://apt.puppetlabs.com/pubkey.gpg'
  71. end
  72. end
  73. context 'with content' do
  74. let(:resource) { Puppet::Type.type(:apt_key).new(
  75. :id => '4BD6EC30',
  76. :content => 'http://apt.puppetlabs.com/pubkey.gpg'
  77. )}
  78. it 'content is set to the string' do
  79. resource[:content].should eq 'http://apt.puppetlabs.com/pubkey.gpg'
  80. end
  81. end
  82. context 'with keyserver' do
  83. let(:resource) { Puppet::Type.type(:apt_key).new(
  84. :id => '4BD6EC30',
  85. :server => 'http://keyring.debian.org'
  86. )}
  87. it 'keyserver is set to Debian' do
  88. resource[:server].should eq 'http://keyring.debian.org'
  89. end
  90. end
  91. context 'validation' do
  92. it 'raises an error if content and source are set' do
  93. expect { Puppet::Type.type(:apt_key).new(
  94. :id => '4BD6EC30',
  95. :source => 'http://apt.puppetlabs.com/pubkey.gpg',
  96. :content => 'Completely invalid as a GPG key'
  97. )}.to raise_error(/content and source are mutually exclusive/)
  98. end
  99. it 'raises an error if a weird length key is used' do
  100. expect { Puppet::Type.type(:apt_key).new(
  101. :id => 'F4BD6EC30',
  102. :source => 'http://apt.puppetlabs.com/pubkey.gpg',
  103. :content => 'Completely invalid as a GPG key'
  104. )}.to raise_error(/Valid values match/)
  105. end
  106. it 'raises an error when an invalid URI scheme is used in source' do
  107. expect { Puppet::Type.type(:apt_key).new(
  108. :id => '4BD6EC30',
  109. :source => 'hkp://pgp.mit.edu'
  110. )}.to raise_error(/Valid values match/)
  111. end
  112. it 'allows the http URI scheme in source' do
  113. expect { Puppet::Type.type(:apt_key).new(
  114. :id => '4BD6EC30',
  115. :source => 'http://pgp.mit.edu'
  116. )}.to_not raise_error
  117. end
  118. it 'allows the https URI scheme in source' do
  119. expect { Puppet::Type.type(:apt_key).new(
  120. :id => '4BD6EC30',
  121. :source => 'https://pgp.mit.edu'
  122. )}.to_not raise_error
  123. end
  124. it 'allows the ftp URI scheme in source' do
  125. expect { Puppet::Type.type(:apt_key).new(
  126. :id => '4BD6EC30',
  127. :source => 'ftp://pgp.mit.edu'
  128. )}.to_not raise_error
  129. end
  130. it 'allows an absolute path in source' do
  131. expect { Puppet::Type.type(:apt_key).new(
  132. :id => '4BD6EC30',
  133. :source => '/path/to/a/file'
  134. )}.to_not raise_error
  135. end
  136. end
  137. end