serverspec 2.0.0.beta16 → 2.0.0.beta17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/lib/serverspec.rb +5 -4
  3. data/lib/serverspec/matcher.rb +41 -0
  4. data/lib/serverspec/{matchers → matcher}/be_enabled.rb +0 -0
  5. data/lib/serverspec/{matchers → matcher}/be_executable.rb +0 -0
  6. data/lib/serverspec/{matchers → matcher}/be_installed.rb +0 -0
  7. data/lib/serverspec/{matchers → matcher}/be_listening.rb +0 -0
  8. data/lib/serverspec/{matchers → matcher}/be_mounted.rb +0 -0
  9. data/lib/serverspec/{matchers → matcher}/be_reachable.rb +0 -0
  10. data/lib/serverspec/{matchers → matcher}/be_readable.rb +0 -0
  11. data/lib/serverspec/{matchers → matcher}/be_resolvable.rb +0 -0
  12. data/lib/serverspec/{matchers → matcher}/be_running.rb +0 -0
  13. data/lib/serverspec/{matchers → matcher}/be_writable.rb +0 -0
  14. data/lib/serverspec/{matchers → matcher}/belong_to_group.rb +0 -0
  15. data/lib/serverspec/{matchers → matcher}/belong_to_primary_group.rb +0 -0
  16. data/lib/serverspec/{matchers → matcher}/contain.rb +0 -0
  17. data/lib/serverspec/{matchers → matcher}/have_entry.rb +0 -0
  18. data/lib/serverspec/{matchers → matcher}/have_rule.rb +0 -0
  19. data/lib/serverspec/matcher/have_site_application.rb +18 -0
  20. data/lib/serverspec/matcher/have_site_bindings.rb +22 -0
  21. data/lib/serverspec/matcher/have_virtual_dir.rb +14 -0
  22. data/lib/serverspec/{matchers → matcher}/match_md5checksum.rb +0 -0
  23. data/lib/serverspec/{matchers → matcher}/match_sha256checksum.rb +0 -0
  24. data/lib/serverspec/{matchers → matcher}/return_exit_status.rb +0 -0
  25. data/lib/serverspec/{matchers → matcher}/return_stderr.rb +0 -0
  26. data/lib/serverspec/{matchers → matcher}/return_stdout.rb +0 -0
  27. data/lib/serverspec/type/iis_app_pool.rb +28 -0
  28. data/lib/serverspec/type/iis_website.rb +13 -0
  29. data/lib/serverspec/version.rb +1 -1
  30. data/serverspec.gemspec +1 -1
  31. data/spec/type/darwin/package_spec.rb +7 -0
  32. data/spec/type/freebsd/file_spec.rb +40 -2
  33. data/spec/type/windows/iis_app_pool_spec.rb +9 -6
  34. data/spec/type/windows/iis_webisite_spec.rb +8 -18
  35. data/wercker.yml +12 -0
  36. metadata +28 -25
  37. data/lib/serverspec/matchers.rb +0 -36
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e7c1597c8e26e6e700e5f728f8a4408a0c39bdf2
4
- data.tar.gz: 05986fefb3d7c4a7d9d82092b0eab11b375b0234
3
+ metadata.gz: 873dab8b4bb7288f62a1999e0e1d545b822b7746
4
+ data.tar.gz: f30d9f80fc651c0ed80fd4abbec0a59418ee6e35
5
5
  SHA512:
6
- metadata.gz: 2a2d5c0786c4e5b0c62b12afee0d6244bdf96465c3bcace2ae391708cd3a10f88e64b4a7a053ab108ea11c2e561871975475dc2f124e3ccbf0105efcfb04b9c6
7
- data.tar.gz: aea96827f97bd51e9bbfb891d0a470e079efd4ede3b51f162d752ad871bd5a8123c0b45f3e1003105f0c284874ecb8ba8c07f98f92648c94acc3a3fac1cd817c
6
+ metadata.gz: 4f4a49792ab4facfa84f282090f0d6762f6de74f2c3611f99f0d92b5ef3aacebb49b9ba82b311cb2f407a3706cd208e1d8e3f9e3bc8f33e964de29fa2389fc2a
7
+ data.tar.gz: bf85e074cffb9c5d281db1fba3f983b0b02d75d75c7b5e65b07571b1b6c5db5fcafd92310071895714c3158797642029254c41f7a2b7ddc325b90031c0ff55cb
data/lib/serverspec.rb CHANGED
@@ -3,7 +3,7 @@ require 'specinfra'
3
3
  require 'rspec'
4
4
  require 'rspec/its'
5
5
  require 'serverspec/version'
6
- require 'serverspec/matchers'
6
+ require 'serverspec/matcher'
7
7
  require 'serverspec/helper'
8
8
  require 'serverspec/setup'
9
9
  require 'serverspec/subject'
@@ -15,11 +15,12 @@ module RSpec::Core::Notifications
15
15
  def failure_lines
16
16
  @failure_lines ||=
17
17
  begin
18
- lines = ["Failure/Error: #{read_failed_line.strip}"]
18
+ lines = ["On host `#{Specinfra.configuration.host}`"]
19
+ lines << "Failure/Error: #{read_failed_line.strip}"
19
20
  lines << "#{exception_class_name}:" unless exception_class_name =~ /RSpec/
20
21
  exception.message.to_s.split("\n").each do |line|
21
- lines << " #{line}" if exception.message
22
- end
22
+ lines << " #{line}" if exception.message
23
+ end
23
24
  lines << " #{example.metadata[:command]}"
24
25
  lines << " #{example.metadata[:stdout]}" if example.metadata[:stdout]
25
26
  lines << " #{example.metadata[:stderr]}" if example.metadata[:stderr]
@@ -0,0 +1,41 @@
1
+ # file
2
+ require 'serverspec/matcher/be_mounted'
3
+ require 'serverspec/matcher/contain'
4
+ require 'serverspec/matcher/be_readable'
5
+ require 'serverspec/matcher/be_writable'
6
+ require 'serverspec/matcher/be_executable'
7
+ require 'serverspec/matcher/match_md5checksum'
8
+ require 'serverspec/matcher/match_sha256checksum'
9
+
10
+ # port
11
+ require 'serverspec/matcher/be_listening'
12
+
13
+ # host
14
+ require 'serverspec/matcher/be_resolvable'
15
+ require 'serverspec/matcher/be_reachable'
16
+
17
+ # package
18
+ require 'serverspec/matcher/be_installed'
19
+
20
+ # service
21
+ require 'serverspec/matcher/be_enabled'
22
+ require 'serverspec/matcher/be_running'
23
+
24
+ # user
25
+ require 'serverspec/matcher/belong_to_group'
26
+ require 'serverspec/matcher/belong_to_primary_group'
27
+
28
+ require 'serverspec/matcher/return_exit_status'
29
+ require 'serverspec/matcher/return_stdout'
30
+ require 'serverspec/matcher/return_stderr'
31
+
32
+ # ipfiter, ipnat, iptables
33
+ require 'serverspec/matcher/have_rule'
34
+
35
+ # cron, routing_table
36
+ require 'serverspec/matcher/have_entry'
37
+
38
+ # iis_website
39
+ require 'serverspec/matcher/have_site_application'
40
+ require 'serverspec/matcher/have_site_bindings'
41
+ require 'serverspec/matcher/have_virtual_dir'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,18 @@
1
+ RSpec::Matchers.define :have_site_application do |app|
2
+ match do |subject|
3
+ if subject.class.name == 'Serverspec::Type::IisWebsite'
4
+ subject.has_site_application?(app, @pool, @physical_path)
5
+ else
6
+ className = subject.class.name
7
+ raise "not supported class #{className}"
8
+ end
9
+ end
10
+
11
+ chain :with_pool do |pool|
12
+ @pool = pool
13
+ end
14
+
15
+ chain :with_physical_path do |physical_path|
16
+ @physical_path = physical_path
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ RSpec::Matchers.define :have_site_bindings do |port|
2
+ match do |subject|
3
+ if subject.class.name == 'Serverspec::Type::IisWebsite'
4
+ subject.has_site_bindings?(port, @protocol, @ipaddress, @host_header)
5
+ else
6
+ className = subject.class.name
7
+ raise "not supported class #{className}"
8
+ end
9
+ end
10
+
11
+ chain :with_protocol do |protocol|
12
+ @protocol = protocol
13
+ end
14
+
15
+ chain :with_ipaddress do |ipaddress|
16
+ @ipaddress = ipaddress
17
+ end
18
+
19
+ chain :with_host_header do |host_header|
20
+ @host_header = host_header
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ RSpec::Matchers.define :have_virtual_dir do |vdir|
2
+ match do |subject|
3
+ if subject.class.name == 'Serverspec::Type::IisWebsite'
4
+ subject.has_virtual_dir?(vdir, @path)
5
+ else
6
+ className = subject.class.name
7
+ raise "not supported class #{className}"
8
+ end
9
+ end
10
+
11
+ chain :with_path do |path|
12
+ @path = path
13
+ end
14
+ end
@@ -9,6 +9,34 @@ module Serverspec
9
9
  @runner.check_iis_app_pool_has_dotnet_version(@name, dotnet)
10
10
  end
11
11
 
12
+ def has_32bit_enabled?()
13
+ @runner.check_iis_app_pool_has_32bit_enabled(@name)
14
+ end
15
+
16
+ def has_idle_timeout?(minutes)
17
+ @runner.check_iis_app_pool_has_idle_timeout(@name, minutes)
18
+ end
19
+
20
+ def has_identity_type?(identity_type)
21
+ @runner.check_iis_app_pool_has_identity_type(@name, identity_type)
22
+ end
23
+
24
+ def has_periodic_restart?(minutes)
25
+ @runner.check_iis_app_pool_has_periodic_restart(@name, minutes)
26
+ end
27
+
28
+ def has_user_profile_enabled?()
29
+ @runner.check_iis_app_pool_has_user_profile(@name)
30
+ end
31
+
32
+ def has_username?(username)
33
+ @runner.check_iis_app_pool_has_username(@name, username)
34
+ end
35
+
36
+ def has_managed_pipeline_mode?(mode)
37
+ @runner.check_iis_app_pool_has_managed_pipeline_mode(@name, mode)
38
+ end
39
+
12
40
  def to_s
13
41
  %Q[IIS Application Pool "#{@name}"]
14
42
  end
@@ -22,9 +22,22 @@ module Serverspec
22
22
  @runner.check_iis_website_has_physical_path(@name, path)
23
23
  end
24
24
 
25
+ def has_site_bindings?(port, protocol, ipaddress, host_header)
26
+ @runner.check_iis_website_has_site_bindings(@name, port, protocol, ipaddress, host_header)
27
+ end
28
+
29
+ def has_virtual_dir?(vdir, path)
30
+ @runner.check_iis_website_has_virtual_dir(@name, vdir, path)
31
+ end
32
+
33
+ def has_site_application?(app, pool, physical_path)
34
+ @runner.check_iis_website_has_site_application(@name, app, pool, physical_path)
35
+ end
36
+
25
37
  def to_s
26
38
  %Q[IIS Website "#{@name}"]
27
39
  end
28
40
  end
29
41
  end
30
42
  end
43
+
@@ -1,3 +1,3 @@
1
1
  module Serverspec
2
- VERSION = "2.0.0.beta16"
2
+ VERSION = "2.0.0.beta17"
3
3
  end
data/serverspec.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_runtime_dependency "rspec", "~> 3.0.0"
22
22
  spec.add_runtime_dependency "rspec-its"
23
- spec.add_runtime_dependency "specinfra", "~> 2.0.0.beta16"
23
+ spec.add_runtime_dependency "specinfra", "~> 2.0.0.beta29"
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
25
25
  spec.add_development_dependency "rake", "~> 10.1.1"
26
26
  end
@@ -18,3 +18,10 @@ describe package('httpd') do
18
18
  it { should_not be_installed.with_version('invalid-version') }
19
19
  end
20
20
 
21
+ describe package('httpd') do
22
+ it { should be_installed.by('homebrew') }
23
+ end
24
+
25
+ describe package('httpd') do
26
+ it { should be_installed.by('pkgutil') }
27
+ end
@@ -2,6 +2,44 @@ require 'spec_helper'
2
2
 
3
3
  set :os, :family => 'freebsd'
4
4
 
5
- describe file('/tmp') do
6
- it { should be_mode 777 }
5
+ describe file('/etc/passwd') do
6
+ it { should be_mode 644 }
7
+ end
8
+
9
+ describe file('/etc/passwd') do
10
+ it { should_not be_mode 'invalid' }
11
+ end
12
+
13
+ describe file('/etc/passwd') do
14
+ it { should be_owned_by 'root' }
15
+ end
16
+
17
+ describe file('/etc/passwd') do
18
+ it { should_not be_owned_by 'invalid-owner' }
19
+ end
20
+
21
+ describe file('/etc/passwd') do
22
+ it { should be_grouped_into 'root' }
23
+ end
24
+
25
+ describe file('/etc/passwd') do
26
+ it { should_not be_grouped_into 'invalid-group' }
27
+ end
28
+
29
+ describe file('/sbin/nologin') do
30
+ it { should be_linked_to '/usr/sbin/nologin' }
31
+ end
32
+
33
+ describe file('dummy-link') do
34
+ it { should_not be_linked_to '/invalid/target' }
35
+ end
36
+
37
+ describe file('/etc/passwd') do
38
+ let(:stdout) { Time.now.to_i.to_s }
39
+ its(:mtime) { should > DateTime.now - 1 }
40
+ end
41
+
42
+ describe file('/etc/passwod') do
43
+ let(:stdout) { 100.to_s }
44
+ its(:size) { should > 0 }
7
45
  end
@@ -5,10 +5,13 @@ set :backend, :cmd
5
5
  set :os, :family => 'windows'
6
6
 
7
7
  describe iis_app_pool('Default App Pool') do
8
- it{ should exist }
8
+ it { should exist }
9
+ it { should have_dotnet_version('2.0') }
10
+ it { should have_32bit_enabled }
11
+ it { should have_idle_timeout(5) }
12
+ it { should have_identity_type('foo') }
13
+ it { should have_periodic_restart(60) }
14
+ it { should have_user_profile_enabled }
15
+ it { should have_username('user') }
16
+ it { should have_managed_pipeline_mode('mode') }
9
17
  end
10
-
11
- describe iis_app_pool('Default App Pool') do
12
- it{ should have_dotnet_version('2.0') }
13
- end
14
-
@@ -5,22 +5,12 @@ set :backend, :cmd
5
5
  set :os, :family => 'windows'
6
6
 
7
7
  describe iis_website('Default Website') do
8
- it{ should exist }
8
+ it { should exist }
9
+ it { should be_enabled }
10
+ it { should be_running }
11
+ it { should be_in_app_pool('Default App Pool') }
12
+ it { should have_physical_path('C:\\inetpub\\www') }
13
+ it { should have_site_bindings('port').with_protocol('protocol').with_ipaddress('ipaddress').with_host_header('host_header') }
14
+ it { should have_virtual_dir('vdir').with_path('path') }
15
+ it { should have_site_application('app').with_pool('pool').with_physical_path('physical_path') }
9
16
  end
10
-
11
- describe iis_website('Default Website') do
12
- it{ should be_enabled }
13
- end
14
-
15
- describe iis_website('Default Website') do
16
- it{ should be_running }
17
- end
18
-
19
- describe iis_website('Default Website') do
20
- it{ should be_in_app_pool('Default App Pool') }
21
- end
22
-
23
- describe iis_website('Default Website') do
24
- it{ should have_physical_path('C:\\inetpub\\www') }
25
- end
26
-
data/wercker.yml CHANGED
@@ -26,6 +26,10 @@ build:
26
26
  name: Run vagrant up centos65
27
27
  code: vagrant up centos65 --provider=digital_ocean
28
28
  cwd: $WORKING_DIR
29
+ - script:
30
+ name: Run itamae
31
+ code: bundle exec ./itamae.rb centos65
32
+ cwd: $WORKING_DIR
29
33
  - script:
30
34
  name: Run vagrant reload centos65
31
35
  code: vagrant reload centos65
@@ -38,6 +42,10 @@ build:
38
42
  name: Run vagrant up centos70
39
43
  code: vagrant up centos70 --provider=digital_ocean
40
44
  cwd: $WORKING_DIR
45
+ - script:
46
+ name: Run itamae
47
+ code: bundle exec ./itamae.rb centos70
48
+ cwd: $WORKING_DIR
41
49
  - script:
42
50
  name: Run vagrant reload centos70
43
51
  code: vagrant reload centos70
@@ -50,6 +58,10 @@ build:
50
58
  name: Run vagrant up ubuntu1404
51
59
  code: vagrant up ubuntu1404 --provider=digital_ocean
52
60
  cwd: $WORKING_DIR
61
+ - script:
62
+ name: Run itamae
63
+ code: bundle exec ./itamae.rb ubuntu1404
64
+ cwd: $WORKING_DIR
53
65
  - script:
54
66
  name: Run vagrant reload ubuntu1404
55
67
  code: vagrant reload ubuntu1404
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serverspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta16
4
+ version: 2.0.0.beta17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gosuke Miyashita
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-02 00:00:00.000000000 Z
11
+ date: 2014-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 2.0.0.beta16
47
+ version: 2.0.0.beta29
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 2.0.0.beta16
54
+ version: 2.0.0.beta29
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -103,27 +103,30 @@ files:
103
103
  - lib/serverspec/helper.rb
104
104
  - lib/serverspec/helper/properties.rb
105
105
  - lib/serverspec/helper/type.rb
106
- - lib/serverspec/matchers.rb
107
- - lib/serverspec/matchers/be_enabled.rb
108
- - lib/serverspec/matchers/be_executable.rb
109
- - lib/serverspec/matchers/be_installed.rb
110
- - lib/serverspec/matchers/be_listening.rb
111
- - lib/serverspec/matchers/be_mounted.rb
112
- - lib/serverspec/matchers/be_reachable.rb
113
- - lib/serverspec/matchers/be_readable.rb
114
- - lib/serverspec/matchers/be_resolvable.rb
115
- - lib/serverspec/matchers/be_running.rb
116
- - lib/serverspec/matchers/be_writable.rb
117
- - lib/serverspec/matchers/belong_to_group.rb
118
- - lib/serverspec/matchers/belong_to_primary_group.rb
119
- - lib/serverspec/matchers/contain.rb
120
- - lib/serverspec/matchers/have_entry.rb
121
- - lib/serverspec/matchers/have_rule.rb
122
- - lib/serverspec/matchers/match_md5checksum.rb
123
- - lib/serverspec/matchers/match_sha256checksum.rb
124
- - lib/serverspec/matchers/return_exit_status.rb
125
- - lib/serverspec/matchers/return_stderr.rb
126
- - lib/serverspec/matchers/return_stdout.rb
106
+ - lib/serverspec/matcher.rb
107
+ - lib/serverspec/matcher/be_enabled.rb
108
+ - lib/serverspec/matcher/be_executable.rb
109
+ - lib/serverspec/matcher/be_installed.rb
110
+ - lib/serverspec/matcher/be_listening.rb
111
+ - lib/serverspec/matcher/be_mounted.rb
112
+ - lib/serverspec/matcher/be_reachable.rb
113
+ - lib/serverspec/matcher/be_readable.rb
114
+ - lib/serverspec/matcher/be_resolvable.rb
115
+ - lib/serverspec/matcher/be_running.rb
116
+ - lib/serverspec/matcher/be_writable.rb
117
+ - lib/serverspec/matcher/belong_to_group.rb
118
+ - lib/serverspec/matcher/belong_to_primary_group.rb
119
+ - lib/serverspec/matcher/contain.rb
120
+ - lib/serverspec/matcher/have_entry.rb
121
+ - lib/serverspec/matcher/have_rule.rb
122
+ - lib/serverspec/matcher/have_site_application.rb
123
+ - lib/serverspec/matcher/have_site_bindings.rb
124
+ - lib/serverspec/matcher/have_virtual_dir.rb
125
+ - lib/serverspec/matcher/match_md5checksum.rb
126
+ - lib/serverspec/matcher/match_sha256checksum.rb
127
+ - lib/serverspec/matcher/return_exit_status.rb
128
+ - lib/serverspec/matcher/return_stderr.rb
129
+ - lib/serverspec/matcher/return_stdout.rb
127
130
  - lib/serverspec/setup.rb
128
131
  - lib/serverspec/subject.rb
129
132
  - lib/serverspec/type/base.rb
@@ -1,36 +0,0 @@
1
- # file
2
- require 'serverspec/matchers/be_mounted'
3
- require 'serverspec/matchers/contain'
4
- require 'serverspec/matchers/be_readable'
5
- require 'serverspec/matchers/be_writable'
6
- require 'serverspec/matchers/be_executable'
7
- require 'serverspec/matchers/match_md5checksum'
8
- require 'serverspec/matchers/match_sha256checksum'
9
-
10
- # port
11
- require 'serverspec/matchers/be_listening'
12
-
13
- # host
14
- require 'serverspec/matchers/be_resolvable'
15
- require 'serverspec/matchers/be_reachable'
16
-
17
- # package
18
- require 'serverspec/matchers/be_installed'
19
-
20
- # service
21
- require 'serverspec/matchers/be_enabled'
22
- require 'serverspec/matchers/be_running'
23
-
24
- # user
25
- require 'serverspec/matchers/belong_to_group'
26
- require 'serverspec/matchers/belong_to_primary_group'
27
-
28
- require 'serverspec/matchers/return_exit_status'
29
- require 'serverspec/matchers/return_stdout'
30
- require 'serverspec/matchers/return_stderr'
31
-
32
- # ipfiter, ipnat, iptables
33
- require 'serverspec/matchers/have_rule'
34
-
35
- # cron, routing_table
36
- require 'serverspec/matchers/have_entry'