#!/usr/bin/env bats

setup() {
  DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )"
  echo "$DIR"
  packer init -upgrade "$DIR"
}

teardown() {
  rm -f /tmp/tmpfile
}

clean_blank_lines() {
  # Remove any blank lines that HCL likes to leave around
  awk 'NF' "$1" > /tmp/tmpfile && cat /tmp/tmpfile > "$1"
}

## Test DHCP
###############################################################################
@test "network with Autoinstall using DHCP" {
  mkdir -p "$DIR/output/dhcp"
  packer build -var-file="$DIR/test-dhcp.pkrvars.hcl" -var "output_folder=$DIR/output/dhcp" -only "autoinstall.*" "$DIR"
  run clean_blank_lines "$DIR/output/dhcp/autoinstall"
  run diff -u "$DIR/output/dhcp/autoinstall" "$DIR/golden/dhcp-autoinstall"
  [ "$status" -eq 0 ]
}

@test "network with Kickstart using DHCP" {
  mkdir -p "$DIR/output/dhcp"
  packer build -var-file="$DIR/test-dhcp.pkrvars.hcl" -var "output_folder=$DIR/output/dhcp" -only "kickstart.*" "$DIR"
  run clean_blank_lines "$DIR/output/dhcp/kickstart"
  run diff -u "$DIR/output/dhcp/kickstart" "$DIR/golden/dhcp-kickstart"
  [ "$status" -eq 0 ]
}

@test "network with Preseed using DHCP" {
  mkdir -p "$DIR/output/dhcp"
  packer build -var-file="$DIR/test-dhcp.pkrvars.hcl" -var "output_folder=$DIR/output/dhcp" -only "preseed.*" "$DIR"
  run clean_blank_lines "$DIR/output/dhcp/preseed"
  run diff -u "$DIR/output/dhcp/preseed" "$DIR/golden/dhcp-preseed"
  [ "$status" -eq 0 ]
}

## Test static IP
###############################################################################
@test "network with Autoinstall using static IP" {
  mkdir -p "$DIR/output/static"
  packer build -var-file="$DIR/test-static.pkrvars.hcl" -var "output_folder=$DIR/output/static" -only "autoinstall.*" "$DIR"
  run clean_blank_lines "$DIR/output/static/autoinstall"
  run diff -u "$DIR/output/static/autoinstall" "$DIR/golden/static-autoinstall"
  [ "$status" -eq 0 ]
}

@test "network with Kickstart using static IP" {
  mkdir -p "$DIR/output/static"
  packer build -var-file="$DIR/test-static.pkrvars.hcl" -var "output_folder=$DIR/output/static" -only "kickstart.*" "$DIR"
  run clean_blank_lines "$DIR/output/static/kickstart"
  run diff -u "$DIR/output/static/kickstart" "$DIR/golden/static-kickstart"
  [ "$status" -eq 0 ]
}

@test "network with Preseed using static IP" {
  mkdir -p "$DIR/output/static"
  packer build -var-file="$DIR/test-static.pkrvars.hcl" -var "output_folder=$DIR/output/static" -only "preseed.*" "$DIR"
  run clean_blank_lines "$DIR/output/static/preseed"
  run diff -u "$DIR/output/static/preseed" "$DIR/golden/static-preseed"
  [ "$status" -eq 0 ]
}
