Skip to content

Commit

Permalink
Add global registration bats tests for Katello clients
Browse files Browse the repository at this point in the history
  • Loading branch information
ehelms committed Aug 6, 2021
1 parent e247256 commit cf22743
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 0 deletions.
78 changes: 78 additions & 0 deletions bats/fb-katello-client-global-registration.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#!/usr/bin/env bats
# vim: ft=sh:sw=2:et

set -o pipefail

load os_helper
load foreman_helper
load fixtures/content

@test "remove subscription manager" {
if [ -e "/etc/rhsm/ca/candlepin-local.pem" ]; then
rpm -e `rpm -qf /etc/rhsm/ca/candlepin-local.pem`
fi

cleanSubscriptionManager
tPackageRemove subscription-manager
}

@test "disable puppet agent to prevent checkin from registering host to another org" {
systemctl is-active puppet || skip "Puppet is not active"
systemctl stop puppet
}

@test "delete host if present" {
hammer host delete --name=$HOSTNAME || echo "Could not delete host"
}

@test "register with global registration with activation key" {
run yum erase -y 'katello-ca-consumer-*'
echo "rc=${status}"
echo "${output}"

curl_command="curl https://admin:changeme@$HOSTNAME/api/registration_commands -X POST -H 'Content-Type: application/json' -d '{\"activation_key\":\"${ACTIVATION_KEY}\",\"organization\":\"${ORGANIZATION}\"}'"
registration_json=$(eval $curl_command)
echo "${registration_json}"

registration_command=$(echo "${registration_json}" | ruby -e "require 'json'; puts JSON.load(ARGF.read).fetch('registration_command')")
eval $registration_command
}

@test "check content host is registered" {
hammer host info --name $HOSTNAME
}

@test "enable content view repo" {
subscription-manager repos --enable="${ORGANIZATION_LABEL}_${PRODUCT_LABEL}_${YUM_REPOSITORY_LABEL}" | grep -q "is enabled for this system"
}

@test "install katello-host-tools" {
tPackageInstall katello-host-tools && tPackageExists katello-host-tools
}

@test "install package locally" {
run yum -y remove walrus
tPackageInstall walrus-0.71 && tPackageExists walrus-0.71
}

@test "check available errata" {
local next_wait_time=0
until hammer host errata list --host $HOSTNAME | grep 'RHEA-2012:0055'; do
if [ $next_wait_time -eq 14 ]; then
# make one last try, also makes the error nice
hammer host errata list --host $HOSTNAME | grep 'RHEA-2012:0055'
fi
sleep $(( next_wait_time++ ))
done
}

@test "try fetching container content" {
tPackageExists podman || tPackageInstall podman
podman login $HOSTNAME -u admin -p changeme
CONTAINER_PULL_LABEL=`echo "${ORGANIZATION_LABEL}-${PRODUCT_LABEL}-${CONTAINER_REPOSITORY_LABEL}"| tr '[:upper:]' '[:lower:]'`
podman pull "${HOSTNAME}/${CONTAINER_PULL_LABEL}"
}

@test "cleanup subscription-manager after content tests" {
cleanSubscriptionManager
}
11 changes: 11 additions & 0 deletions bats/os_helper.bash
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,17 @@ tPackageUpgrade() {
fi
}

tPackageRemove() {
if tIsRedHatCompatible; then
yum -y remove $*
elif tIsDebianCompatible; then
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" remove $*
else
false # not implemented
fi
}

tPackageVersion() {
if tIsRedHatCompatible; then
rpm -q --qf "%{VERSION}\n" "$1"
Expand Down
1 change: 1 addition & 0 deletions roles/bats/defaults/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ bats_tests:
- "fb-test-katello.bats"
- "fb-katello-content.bats"
- "fb-katello-client.bats"
- "fb-katello-client-global-registration.bats"
bats_tests_additional: []
bats_teardown:
- "fb-destroy-organization.bats"

0 comments on commit cf22743

Please sign in to comment.