Sha256: 279854c650f445e827bfc411b3b06c10db191852f545742da8c94c5c9a5a1ce6

Contents?: true

Size: 1.66 KB

Versions: 14

Compression:

Stored size: 1.66 KB

Contents

require 'chef_zero/server'

module Berkshelf
  module RSpec
    module ChefServer
      class << self
        def clear_request_log
          @request_log = Array.new
        end

        def request_log
          @request_log ||= Array.new
        end

        def server
          @server ||= ChefZero::Server.new(port: PORT, generate_real_keys: false)
        end

        def server_url
          (@server && @server.url) || "http://localhost/#{PORT}"
        end

        def start
          server.start_background
          server.on_response do |request, response|
            request_log << [ request, response ]
          end
          clear_request_log

          server
        end

        def stop
          @server.stop if @server
        end

        def running?
          @server && @server.running?
        end
      end

      PORT = 8889

      def chef_client(name, hash = Hash.new)
        load_data(:clients, name, hash)
      end

      def chef_cookbook(name, version, cookbook = Hash.new)
        ChefServer.server.load_data("cookbooks" => { "#{name}-#{version}" => cookbook })
      end

      def chef_data_bag(name, hash = Hash.new)
        ChefServer.server.load_data({ 'data' => { name => hash }})
      end

      def chef_environment(name, hash = Hash.new)
        load_data(:environments, name, hash)
      end

      def chef_node(name, hash = Hash.new)
        load_data(:nodes, name, hash)
      end

      def chef_role(name, hash = Hash.new)
        load_data(:roles, name, hash)
      end

      private

        def load_data(key, name, hash)
          ChefServer.server.load_data(key.to_s => { name => JSON.fast_generate(hash) })
        end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
berkshelf-api-3.0.0 spec/support/chef_server.rb
berkshelf-api-2.2.0 spec/support/chef_server.rb
berkshelf-api-2.1.3 spec/support/chef_server.rb
berkshelf-api-2.1.2 spec/support/chef_server.rb
berkshelf-api-2.1.1 spec/support/chef_server.rb
berkshelf-api-2.1.0 spec/support/chef_server.rb
berkshelf-api-2.0.0 spec/support/chef_server.rb
berkshelf-api-1.4.0 spec/support/chef_server.rb
berkshelf-api-1.3.1 spec/support/chef_server.rb
berkshelf-api-1.3.0 spec/support/chef_server.rb
berkshelf-api-1.2.2 spec/support/chef_server.rb
berkshelf-api-1.2.1 spec/support/chef_server.rb
berkshelf-api-1.2.0 spec/support/chef_server.rb
berkshelf-api-1.2.0.rc2 spec/support/chef_server.rb