require 'zabbixapi'
require 'json'

# settings
api_url = 'http://localhost/zabbix/api_jsonrpc.php'
api_login = 'Admin'
api_password = 'zabbix'


zbx = Zabbix::ZabbixApi.new(api_url, api_login, api_password)
#zbx.debug = true

describe Zabbix::ZabbixApi, "create_group" do

  # 01. Create group
  it "Create some group" do
    result = zbx.add_group('some_group')
    result.should be_kind_of(Integer)
  end

  # 02. Get group_id
  it "Get group_id" do
    result = zbx.get_group_id('some_group')
    result.should be_kind_of(Integer)
  end

  # 03. Get unknown group_id
  it "Get unknown group" do
    result = zbx.get_group_id('___some_group')
    result.should be_nil
  end

  # 04. Create host
  host_options = { 
    "ip"     => '127.0.0.1',
    "dns"    => 'my.example.com',
    "host"   => 'my.example.com',
    "useip"  => 1,
    "groups" => [1]
  }
  it "Create host" do
    result = zbx.add_host(host_options)
    result.should be_kind_of(Integer)
  end

  # 05. Get host
  it "Get host by name" do
    result = zbx.get_host_id('my.example.com')
    result.should be_kind_of(Integer)
  end

  # 06. Get unknown host
  it "Get unknown host by name" do
    result = zbx.get_host_id('___my.example.com')
    result.should be_nil
  end

  # 07. Delete host
  it "Delete host" do
    result = zbx.delete_host('my.example.com')
    result.should be_kind_of(Integer)
  end

  # 08. Delete unknown host
  it "Delete unknown host" do
    result = zbx.delete_host('__my.example.com')
    result.should be_nil
  end

  # 09. Delete group
  it "Delete some group" do
    result = zbx.delete_group('some_group')
    result.should be_kind_of(Integer)
  end

  # 10. Delete unknown group
  it "Delete unknown group" do
    result = zbx.delete_group('___some_group')
    result.should be_nil
  end

  # 11. Mediatype create
  mediatype_options = { 
    'type' => '0', #email
    'description' => 'example_mediatype',
    'smtp_server' => 'test.company.com',
    'smtp_helo'   => 'test.company.com',
    'smtp_email'  => 'test@test.company.com',
  }
  it "Create mediatype" do
    result = zbx.add_mediatype(mediatype_options)
    result.should be_kind_of(Integer)
  end
  # 12. Mediatype unknown delete
  it "Delete unknown mediatype" do
    result = zbx.delete_mediatype('__example_mediatype')
    result.should be_nil
  end

  # 13. Mediatype delete
  it "Delete mediatype" do
    result = zbx.delete_mediatype('example_mediatype')
    result.should be_kind_of(Integer)
  end

end