serverspec 2.0.0.beta16 → 2.0.0.beta17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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'