require 'helper'
require 'inspec/resource'
require 'inspec/resources/registry_key'

describe 'Inspec::Resources::RegistryKey' do
  it 'read reg key with human readable name' do
    resource = MockLoader.new(:windows).load_resource('registry_key', 'Task Scheduler', 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Schedule')
    _(resource.Start).must_equal 2
  end

  it 'read reg key without human readable name' do
    resource_without_name = MockLoader.new(:windows).load_resource('registry_key', 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Schedule')
    _(resource_without_name.Start).must_equal 2
  end

  it 'supports array syntax for keys with periods in them' do
    resource = MockLoader.new(:windows).load_resource('registry_key', 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Schedule')
    _(resource.send(:[], "key.with.period")).must_equal 12345
  end

  it 'generates a proper path from options' do
    resource = MockLoader.new(:windows).load_resource(
      'registry_key',
      'Test 1',
      { hive: 'my_hive', key: '\\my_prefixed_key'},
    )
    _(resource.send(:generate_registry_key_path_from_options)).must_equal 'my_hive\\my_prefixed_key'
  end

  it 'generates a proper path from options when the key has no leading slash' do
    resource = MockLoader.new(:windows).load_resource(
      'registry_key',
      'Test 1',
      { hive: 'my_hive', key: 'key_with_no_slash'},
    )
    _(resource.send(:generate_registry_key_path_from_options)).must_equal 'my_hive\\key_with_no_slash'
  end

end