#!/usr/bin/env bats

load helpers

IMAGE=docker.io/kubernetes/pause

function teardown() {
	cleanup_test
}

@test "image remove with multiple names, by name" {
	start_crio "" "" --no-pause-image
	# Pull the image, giving it one name.
	run crictl pull "$IMAGE"
	echo "$output"
	[ "$status" -eq 0 ]
	# Add a second name to the image.
	run "$COPYIMG_BINARY" --root "$TESTDIR/crio" $STORAGE_OPTIONS --runroot "$TESTDIR/crio-run" --image-name="$IMAGE":latest --add-name="$IMAGE":othertag --signature-policy="$INTEGRATION_ROOT"/policy.json
	echo "$output"
	[ "$status" -eq 0 ]
	# Get the list of image names and IDs.
	run crictl images -v
	echo "$output"
	[ "$status" -eq 0 ]
	[ "$output" != "" ]
	# Cycle through each name, removing it by name.  The image that we assigned a second
	# name to should still be around when we get to removing its second name.
	grep ^RepoTags: <<< "$output" | while read -r header tag ignored ; do
		run crictl rmi "$tag"
		echo "$output"
		[ "$status" -eq 0 ]
	done
	# List all images and their names.  There should be none now.
	run crictl images --quiet
	echo "$output"
	[ "$status" -eq 0 ]
	[ "$output" = "" ]
	printf '%s\n' "$output" | while IFS= read -r id; do
		echo "$id"
	done
	# All done.
	cleanup_images
	stop_crio
}

@test "image remove with multiple names, by ID" {
	start_crio "" "" --no-pause-image
	# Pull the image, giving it one name.
	run crictl pull "$IMAGE"
	echo "$output"
	[ "$status" -eq 0 ]
	# Add a second name to the image.
	run "$COPYIMG_BINARY" --root "$TESTDIR/crio" $STORAGE_OPTIONS --runroot "$TESTDIR/crio-run" --image-name="$IMAGE":latest --add-name="$IMAGE":othertag --signature-policy="$INTEGRATION_ROOT"/policy.json
	echo "$output"
	[ "$status" -eq 0 ]
	# Get the list of the image's names and its ID.
	run crictl images -v "$IMAGE":latest
	echo "$output"
	[ "$status" -eq 0 ]
	[ "$output" != "" ]
	# Try to remove the image using its ID.  That should succeed.
	grep ^ID: <<< "$output" | while read -r header id ; do
		run crictl rmi "$id"
		echo "$output"
		[ "$status" -eq 0 ]
	done
	# The image should be gone now.
	run crictl images -v "$IMAGE"
	echo "$output"
	[ "$status" -eq 0 ]
	[ "$output" = "" ]
	# All done.
	cleanup_images
	stop_crio
}