control 'accounting_activemq' do
  nodes_dir = '/tmp/kitchen/nodes'
  output = command("ls #{nodes_dir}").stdout.strip
  node_json = "#{nodes_dir}/#{output}"
  if file(node_json).exist?
    node = json(node_json).params

    case node['automatic']['platform_family']
    when 'rhel'
      firewall_package_name = node['default']['firewall']['redhat7_iptables'] ? 'iptables' : 'firewalld'
      firewall_chain = node['default']['firewall']['redhat7_iptables'] ? 'INPUT' : 'INPUT_direct'
      firewall_rules = [
        "-A #{firewall_chain} -p tcp -m tcp -m multiport --dports 8161 -m comment --comment http -j ACCEPT",
        "-A #{firewall_chain} -p tcp -m tcp -m multiport --dports 61616 -m comment --comment https -j ACCEPT",
        "-A #{firewall_chain} -p tcp -m tcp -m multiport --dports 22 -m comment --comment ssh -j ACCEPT",
      ]

      packages = %w(
        java-1.8.0-openjdk
      )
    when 'debian'
      firewall_package_name = 'ufw'
      firewall_chain = 'ufw-user-input'
      firewall_rules = [
        "-A #{firewall_chain} -p tcp -m tcp --dport 8161 -j ACCEPT",
        "-A #{firewall_chain} -p tcp -m tcp --dport 61616 -j ACCEPT",
        "-A #{firewall_chain} -p tcp -m tcp --dport 22 -j ACCEPT",
      ]

      packages = %w(
        openjdk-8-jdk
        openjdk-8-jre
        openjdk-8-jdk-headless
        openjdk-8-jre-headless
      )
    end

    describe package firewall_package_name do
      it { should be_installed }
    end

    firewall_rules.each do |rule|
      describe iptables do
        it { should have_rule(rule) }
      end
    end

    packages.each do |package|
      describe package(package) do
        it { should be_installed }
      end
    end

    describe package firewall_package_name do
      it { should be_installed }
    end

    firewall_rules.each do |rule|
      describe iptables do
        it { should have_rule(rule) }
      end
    end
  end
end
