#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

# Default log level
# shellcheck disable=SC2034
LOG_LEVEL="DEBUG"

# shellcheck source=/dev/null
source "lib/functions/log.sh"

GITHUB_DOMAIN="github.com"
# shellcheck disable=SC2034
GITHUB_META_URL="https://api.${GITHUB_DOMAIN}/meta"

# shellcheck source=/dev/null
source "lib/functions/setupSSH.sh"

function GetGitHubSshRsaKeyFingerprintTest() {
  local FUNCTION_NAME
  FUNCTION_NAME="${FUNCNAME[0]}"
  info "${FUNCTION_NAME} start"

  local SSH_RSA_KEY_FINGERPRINT
  SSH_RSA_KEY_FINGERPRINT=$(GetGitHubSshRsaKeyFingerprint)

  debug "SSH_RSA_KEY_FINGERPRINT: ${SSH_RSA_KEY_FINGERPRINT}"
  local EXPECTED_GITHUB_RSA_KEY_FINGERPRINT
  EXPECTED_GITHUB_RSA_KEY_FINGERPRINT="$(ssh-keygen -lf /dev/stdin <<<"$(ssh-keyscan -t rsa github.com)" | cut -d ' ' -f2)"
  debug "Expected output: ${EXPECTED_GITHUB_RSA_KEY_FINGERPRINT}"

  if [ "${SSH_RSA_KEY_FINGERPRINT}" != "${EXPECTED_GITHUB_RSA_KEY_FINGERPRINT}" ]; then
    fatal "SSH_RSA_KEY_FINGERPRINT is not equal to ${EXPECTED_GITHUB_RSA_KEY_FINGERPRINT}: ${SSH_RSA_KEY_FINGERPRINT}"
  fi

  notice "${FUNCTION_NAME} PASS"
}

function SetupGithubComSshKeysTest() {
  local FUNCTION_NAME
  FUNCTION_NAME="${FUNCNAME[0]}"
  info "${FUNCTION_NAME} start"

  SSH_KEY="test_ssh_key" SSH_INSECURE_NO_VERIFY_GITHUB_KEY="false" SetupGithubComSshKeys

  notice "${FUNCTION_NAME} PASS"
}

GetGitHubSshRsaKeyFingerprintTest
SetupGithubComSshKeysTest