Sha256: 7281c021d204f7a0c496ac748ae4d88a497486ca7b105efad88725465c41b059

Contents?: true

Size: 1.77 KB

Versions: 52

Compression:

Stored size: 1.77 KB

Contents

# encoding: utf-8
# copyright: 2015, Vulcano Security GmbH
# author: Christoph Hartmann
# author: Dominik Richter
# license: All rights reserved

# Usage:
#
# describe os_env('PATH') do
#   its('split') { should_not include('') }
#   its('split') { should_not include('.') }
# end

require 'utils/simpleconfig'

module Inspec::Resources
  class OsEnv < Inspec.resource(1)
    name 'os_env'
    desc 'Use the os_env InSpec audit resource to test the environment variables for the platform on which the system is running.'
    example "
      describe os_env('VARIABLE') do
        its('matcher') { should eq 1 }
      end
    "

    attr_reader :content
    def initialize(env = nil)
      @osenv = env
      @content = nil
      @content = value_for(env) unless env.nil?
    end

    def split
      # we can't take advantage of `File::PATH_SEPARATOR` as code is
      # evaluated on the host machine
      path_separator = inspec.os.windows? ? ';' : ':'
      # -1 is required to catch cases like dir1::dir2:
      # where we have a trailing :
      @content.nil? ? [] : @content.split(path_separator, -1)
    end

    def to_s
      if @osenv.nil?
        'Environment variables'
      else
        "Environment variable #{@osenv}"
      end
    end

    private

    def value_for(env)
      command = if inspec.os.windows?
                  "${Env:#{env}}"
                else
                  'env'
                end

      out = inspec.command(command)

      unless out.exit_status == 0
        skip_resource "Can't read environment variables on #{os[:name]}. "\
          "Tried `#{command}` which returned #{out.exit_status}"
      end

      if inspec.os.windows?
        out.stdout.strip
      else
        params = SimpleConfig.new(out.stdout).params
        params[env]
      end
    end
  end
end

Version data entries

52 entries across 52 versions & 1 rubygems

Version Path
inspec-1.29.0 lib/resources/os_env.rb
inspec-1.28.1 lib/resources/os_env.rb
inspec-1.28.0 lib/resources/os_env.rb
inspec-1.27.0 lib/resources/os_env.rb
inspec-1.26.0 lib/resources/os_env.rb
inspec-1.25.1 lib/resources/os_env.rb
inspec-1.25.0 lib/resources/os_env.rb
inspec-1.24.0 lib/resources/os_env.rb
inspec-1.23.0 lib/resources/os_env.rb
inspec-1.22.0 lib/resources/os_env.rb
inspec-1.21.0 lib/resources/os_env.rb
inspec-1.20.0 lib/resources/os_env.rb
inspec-1.19.2 lib/resources/os_env.rb
inspec-1.19.1 lib/resources/os_env.rb
inspec-1.19.0 lib/resources/os_env.rb
inspec-1.18.0 lib/resources/os_env.rb
inspec-1.17.0 lib/resources/os_env.rb
inspec-1.16.1 lib/resources/os_env.rb
inspec-1.16.0 lib/resources/os_env.rb
inspec-1.15.0 lib/resources/os_env.rb