control 'Jenkins master functionality' do
  title 'Jenkins packages and configs'

  packages = %w(
    java-11-openjdk-devel
    unzip
    zip
  )
  packages.each do |pkg|
    describe package(pkg) do
      it { should be_installed }
    end
  end

  node = json('/tmp/kitchen/node_attributes.json').params

  # Checking if required jenkins plugins were installed
  plugin_units = %w(
    prerequisite_plugins
    latest_plugins
    pinned_plugins
  )
  plugin_units.each do |unit|
    node['default']['jenkins'][unit].each do |plugin|
      describe command('java -jar /tmp/kitchen/cache/jenkins-cli.jar -s http://127.0.0.1:8080 list-plugins') do
        its('stdout') { should include plugin }
      end
    end
  end

  describe service('jenkins') do
    it { should be_installed }
    it { should be_enabled }
    it { should be_running }
  end

  describe iptables do
    it { should have_rule('-A INPUT_direct -p tcp -m tcp -m multiport --dports 22 -m comment --comment ssh -j ACCEPT') }
    it { should have_rule('-A INPUT_direct -p tcp -m tcp -m multiport --dports 8080 -m comment --comment http-8080 -j ACCEPT') }
  end
end
