Disable CA related spec tests on Windows, since that functionality is not 
supported.

Some cert spec tests are still marked as fails_on_windows because
settings attempts to create and apply a catalog corresponding to
ssl/cert related directories. This fails because on Windows
Puppet.features.root?  always returns true (which is a separate bug),
and as a result attempts to set the owner and group, which fails because
the provider is not implemented yet on Windows.

Also many of these tests were using Tempfile.new and trying to
system("rm -rf ...") later. I changed these to use
PuppetSpec::Files.tmpdir instead, which automatically cleans up
temporary directories after the tests have run.

Reviewed-by: Jacob Helwig <ja...@puppetlabs.com>
Signed-off-by: Josh Cooper <j...@puppetlabs.com>
---
Local-branch: feature/master/8268-puppet-agent-windows
 spec/integration/ssl/certificate_authority_spec.rb |   14 ++++++--------
 spec/integration/ssl/certificate_request_spec.rb   |   15 ++++++---------
 .../ssl/certificate_revocation_list_spec.rb        |   13 ++++++-------
 spec/integration/ssl/host_spec.rb                  |   15 +++++++--------
 .../unit/indirector/certificate_request/ca_spec.rb |    2 +-
 spec/unit/ssl/host_spec.rb                         |   11 ++++++++++-
 spec/unit/sslcertificates/ca_spec.rb               |   16 ++++++----------
 7 files changed, 42 insertions(+), 44 deletions(-)

diff --git a/spec/integration/ssl/certificate_authority_spec.rb 
b/spec/integration/ssl/certificate_authority_spec.rb
index 68b2401..dc8af6a 100755
--- a/spec/integration/ssl/certificate_authority_spec.rb
+++ b/spec/integration/ssl/certificate_authority_spec.rb
@@ -6,17 +6,16 @@
 require 'spec_helper'
 
 require 'puppet/ssl/certificate_authority'
-require 'tempfile'
 
-describe Puppet::SSL::CertificateAuthority, :fails_on_windows => true do
+describe Puppet::SSL::CertificateAuthority, :unless => 
Puppet.features.microsoft_windows? do
+  include PuppetSpec::Files
+
   before do
     # Get a safe temporary file
-    file = Tempfile.new("ca_integration_testing")
-    @dir = file.path
-    file.delete
+    dir = tmpdir("ca_integration_testing")
 
-    Puppet.settings[:confdir] = @dir
-    Puppet.settings[:vardir] = @dir
+    Puppet.settings[:confdir] = dir
+    Puppet.settings[:vardir] = dir
     Puppet.settings[:group] = Process.gid
 
     Puppet::SSL::Host.ca_location = :local
@@ -26,7 +25,6 @@ describe Puppet::SSL::CertificateAuthority, :fails_on_windows 
=> true do
   after {
     Puppet::SSL::Host.ca_location = :none
 
-    system("rm -rf #{@dir}")
     Puppet.settings.clear
 
     Puppet::SSL::CertificateAuthority.instance_variable_set("@instance", nil)
diff --git a/spec/integration/ssl/certificate_request_spec.rb 
b/spec/integration/ssl/certificate_request_spec.rb
index 07a4d92..6c1c8b9 100755
--- a/spec/integration/ssl/certificate_request_spec.rb
+++ b/spec/integration/ssl/certificate_request_spec.rb
@@ -6,21 +6,19 @@
 require 'spec_helper'
 
 require 'puppet/ssl/certificate_request'
-require 'tempfile'
 
+# REMIND: Fails on windows because there is no user provider yet
 describe Puppet::SSL::CertificateRequest, :fails_on_windows => true do
+  include PuppetSpec::Files
+
   before do
     # Get a safe temporary file
-    file = Tempfile.new("csr_integration_testing")
-    @dir = file.path
-    file.delete
-
-    Dir.mkdir(@dir)
+    dir = tmpdir("csr_integration_testing")
 
     Puppet.settings.clear
 
-    Puppet.settings[:confdir] = @dir
-    Puppet.settings[:vardir] = @dir
+    Puppet.settings[:confdir] = dir
+    Puppet.settings[:vardir] = dir
     Puppet.settings[:group] = Process.gid
 
     Puppet::SSL::Host.ca_location = :none
@@ -34,7 +32,6 @@ describe Puppet::SSL::CertificateRequest, :fails_on_windows 
=> true do
   end
 
   after do
-    system("rm -rf #{@dir}")
     Puppet.settings.clear
   end
 
diff --git a/spec/integration/ssl/certificate_revocation_list_spec.rb 
b/spec/integration/ssl/certificate_revocation_list_spec.rb
index 5d2b102..d140fd9 100755
--- a/spec/integration/ssl/certificate_revocation_list_spec.rb
+++ b/spec/integration/ssl/certificate_revocation_list_spec.rb
@@ -6,17 +6,17 @@
 require 'spec_helper'
 
 require 'puppet/ssl/certificate_revocation_list'
-require 'tempfile'
 
+# REMIND: Fails on windows because there is no user provider yet
 describe Puppet::SSL::CertificateRevocationList, :fails_on_windows => true do
+  include PuppetSpec::Files
+
   before do
     # Get a safe temporary file
-    file = Tempfile.new("ca_integration_testing")
-    @dir = file.path
-    file.delete
+    dir = tmpdir("ca_integration_testing")
 
-    Puppet.settings[:confdir] = @dir
-    Puppet.settings[:vardir] = @dir
+    Puppet.settings[:confdir] = dir
+    Puppet.settings[:vardir] = dir
     Puppet.settings[:group] = Process.gid
 
     Puppet::SSL::Host.ca_location = :local
@@ -25,7 +25,6 @@ describe Puppet::SSL::CertificateRevocationList, 
:fails_on_windows => true do
   after {
     Puppet::SSL::Host.ca_location = :none
 
-    system("rm -rf #{@dir}")
     Puppet.settings.clear
 
     # This is necessary so the terminus instances don't lie around.
diff --git a/spec/integration/ssl/host_spec.rb 
b/spec/integration/ssl/host_spec.rb
index 53ff88e..94e2455 100755
--- a/spec/integration/ssl/host_spec.rb
+++ b/spec/integration/ssl/host_spec.rb
@@ -6,17 +6,17 @@
 require 'spec_helper'
 
 require 'puppet/ssl/host'
-require 'tempfile'
 
+# REMIND: Fails on windows because there is no user provider yet
 describe Puppet::SSL::Host, :fails_on_windows => true do
+  include PuppetSpec::Files
+
   before do
     # Get a safe temporary file
-    file = Tempfile.new("host_integration_testing")
-    @dir = file.path
-    file.delete
+    dir = tmpdir("host_integration_testing")
 
-    Puppet.settings[:confdir] = @dir
-    Puppet.settings[:vardir] = @dir
+    Puppet.settings[:confdir] = dir
+    Puppet.settings[:vardir] = dir
     Puppet.settings[:group] = Process.gid
 
     Puppet::SSL::Host.ca_location = :local
@@ -28,7 +28,6 @@ describe Puppet::SSL::Host, :fails_on_windows => true do
   after {
     Puppet::SSL::Host.ca_location = :none
 
-    system("rm -rf #{@dir}")
     Puppet.settings.clear
   }
 
@@ -80,7 +79,7 @@ describe Puppet::SSL::Host, :fails_on_windows => true do
     end
   end
 
-  it "should pass the verification of its own SSL store" do
+  it "should pass the verification of its own SSL store", :unless => 
Puppet.features.microsoft_windows? do
     @host.generate
     @ca = Puppet::SSL::CertificateAuthority.new
     @ca.sign(@host.name)
diff --git a/spec/unit/indirector/certificate_request/ca_spec.rb 
b/spec/unit/indirector/certificate_request/ca_spec.rb
index fb758b5..36628df 100755
--- a/spec/unit/indirector/certificate_request/ca_spec.rb
+++ b/spec/unit/indirector/certificate_request/ca_spec.rb
@@ -10,7 +10,7 @@ require 'puppet/sslcertificates'
 require 'puppet/sslcertificates/ca'
 require 'puppet/indirector/certificate_request/ca'
 
-describe Puppet::SSL::CertificateRequest::Ca, :fails_on_windows => true do
+describe Puppet::SSL::CertificateRequest::Ca, :unless => 
Puppet.features.microsoft_windows? do
   include PuppetSpec::Files
 
   before :each do
diff --git a/spec/unit/ssl/host_spec.rb b/spec/unit/ssl/host_spec.rb
index f004516..226acde 100755
--- a/spec/unit/ssl/host_spec.rb
+++ b/spec/unit/ssl/host_spec.rb
@@ -5,9 +5,18 @@ require 'puppet/ssl/host'
 require 'puppet/sslcertificates'
 require 'puppet/sslcertificates/ca'
 
+# REMIND: Fails on windows because there is no user provider yet
 describe Puppet::SSL::Host, :fails_on_windows => true do
+  include PuppetSpec::Files
+
   before do
     Puppet::SSL::Host.indirection.terminus_class = :file
+
+    # Get a safe temporary file
+    dir = tmpdir("ssl_host_testing")
+    Puppet.settings[:confdir] = dir
+    Puppet.settings[:vardir] = dir
+
     @host = Puppet::SSL::Host.new("myname")
   end
 
@@ -701,7 +710,7 @@ describe Puppet::SSL::Host, :fails_on_windows => true do
     end
   end
 
-  describe "when handling PSON" do
+  describe "when handling PSON", :unless => Puppet.features.microsoft_windows? 
do
     include PuppetSpec::Files
 
     before do
diff --git a/spec/unit/sslcertificates/ca_spec.rb 
b/spec/unit/sslcertificates/ca_spec.rb
index 2ff4036..7a687b8 100755
--- a/spec/unit/sslcertificates/ca_spec.rb
+++ b/spec/unit/sslcertificates/ca_spec.rb
@@ -5,27 +5,23 @@ require 'puppet'
 require 'puppet/sslcertificates'
 require 'puppet/sslcertificates/ca'
 
-describe Puppet::SSLCertificates::CA, :fails_on_windows => true do
+describe Puppet::SSLCertificates::CA, :unless => 
Puppet.features.microsoft_windows? do
+  include PuppetSpec::Files
+
   before :all do
     @hosts = %w{host.domain.com Other.Testing.Com}
   end
 
   before :each do
     Puppet::Util::SUIDManager.stubs(:asuser).yields
-    file = Tempfile.new("ca_testing")
-    @dir = file.path
-    file.delete
+    dir = tmpdir("ca_testing")
 
-    Puppet.settings[:confdir] = @dir
-    Puppet.settings[:vardir]  = @dir
+    Puppet.settings[:confdir] = dir
+    Puppet.settings[:vardir]  = dir
 
     @ca = Puppet::SSLCertificates::CA.new
   end
 
-  after :each do
-    system("rm -rf #{@dir}")
-  end
-
   describe 'when cleaning' do
     it 'should remove associated files' do
       dirs = [:csrdir, :signeddir, :publickeydir, :privatekeydir, :certdir]
-- 
1.7.5.4

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to puppet-dev@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to