Sha256: 1db6e1bba4f6f8ce18620f3469236d5aba0afe1cc05487661f418b9207b62a25

Contents?: true

Size: 1.14 KB

Versions: 3

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

require 'open3'
require 'timeout'

describe 'bin/datadog_backup' do
  # Contract Or[nil,String] => self
  def run_bin(args = '', input = nil)
    status = nil
    output = ''
    cmd = "bin/datadog_backup #{args}"
    Open3.popen2e(cmd) do |i, oe, t|
      pid = t.pid

      if input
        i.puts input
        i.close
      end

      Timeout.timeout(4.0) do
        oe.each do |v|
          output += v
        end
      end
    rescue Timeout::Error
      LOGGER.error "Timing out #{t.inspect} after 4 second"
      Process.kill(15, pid)
    ensure
      status = t.value
    end
    [output, status]
  end

  required_vars = %w[
    DD_API_KEY
    DD_APP_KEY
  ]

  env = {}
  required_vars.each do |v|
    env[v] = v.downcase
  end

  required_vars.map do |v|
    it "dies unless given ENV[#{v}]" do
      stub_const('ENV', env.dup.tap { |h| h.delete(v) })
      _, status = run_bin('backup')
      expect(status).not_to be_success
    end
  end

  it 'supplies help' do
    stub_const('ENV', env)
    out_err, status = run_bin('--help')
    expect(out_err).to match(/Usage: DD_API_KEY=/)
    expect(status).to be_success
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
datadog_backup-3.0.0 spec/datadog_backup_bin_spec.rb
datadog_backup-3.0.0.alpha.2 spec/datadog_backup_bin_spec.rb
datadog_backup-3.0.0.alpha.1 spec/datadog_backup_bin_spec.rb