102 lines
3.1 KiB
Bash
102 lines
3.1 KiB
Bash
#!/usr/bin/env bats
|
|
# SQS tests
|
|
|
|
setup() {
|
|
load 'test_helper/common-setup'
|
|
QUEUE_NAME="bats-test-queue-$(unique_name)"
|
|
QUEUE_URL=""
|
|
}
|
|
|
|
teardown() {
|
|
if [ -n "$QUEUE_URL" ]; then
|
|
aws_cmd sqs delete-queue --queue-url "$QUEUE_URL" >/dev/null 2>&1 || true
|
|
fi
|
|
}
|
|
|
|
@test "SQS: create queue" {
|
|
run aws_cmd sqs create-queue --queue-name "$QUEUE_NAME"
|
|
assert_success
|
|
QUEUE_URL=$(json_get "$output" '.QueueUrl')
|
|
[ -n "$QUEUE_URL" ]
|
|
}
|
|
|
|
@test "SQS: get queue URL" {
|
|
out=$(aws_cmd sqs create-queue --queue-name "$QUEUE_NAME")
|
|
QUEUE_URL=$(json_get "$out" '.QueueUrl')
|
|
|
|
run aws_cmd sqs get-queue-url --queue-name "$QUEUE_NAME"
|
|
assert_success
|
|
got_url=$(json_get "$output" '.QueueUrl')
|
|
[ "$got_url" = "$QUEUE_URL" ]
|
|
}
|
|
|
|
@test "SQS: list queues" {
|
|
out=$(aws_cmd sqs create-queue --queue-name "$QUEUE_NAME")
|
|
QUEUE_URL=$(json_get "$out" '.QueueUrl')
|
|
|
|
run aws_cmd sqs list-queues --queue-name-prefix "bats-test"
|
|
assert_success
|
|
found=$(echo "$output" | jq --arg name "$QUEUE_NAME" '.QueueUrls | any(contains($name))')
|
|
[ "$found" = "true" ]
|
|
}
|
|
|
|
@test "SQS: send and receive message" {
|
|
out=$(aws_cmd sqs create-queue --queue-name "$QUEUE_NAME")
|
|
QUEUE_URL=$(json_get "$out" '.QueueUrl')
|
|
|
|
run aws_cmd sqs send-message --queue-url "$QUEUE_URL" --message-body "hello-bats"
|
|
assert_success
|
|
msg_id=$(json_get "$output" '.MessageId')
|
|
[ -n "$msg_id" ]
|
|
|
|
run aws_cmd sqs receive-message --queue-url "$QUEUE_URL" --max-number-of-messages 1 --wait-time-seconds 1
|
|
assert_success
|
|
body=$(json_get "$output" '.Messages[0].Body')
|
|
[ "$body" = "hello-bats" ]
|
|
}
|
|
|
|
@test "SQS: delete message" {
|
|
out=$(aws_cmd sqs create-queue --queue-name "$QUEUE_NAME")
|
|
QUEUE_URL=$(json_get "$out" '.QueueUrl')
|
|
|
|
aws_cmd sqs send-message --queue-url "$QUEUE_URL" --message-body "hello-bats" >/dev/null
|
|
|
|
out=$(aws_cmd sqs receive-message --queue-url "$QUEUE_URL" --max-number-of-messages 1 --wait-time-seconds 1)
|
|
receipt=$(json_get "$out" '.Messages[0].ReceiptHandle')
|
|
|
|
run aws_cmd sqs delete-message --queue-url "$QUEUE_URL" --receipt-handle "$receipt"
|
|
assert_success
|
|
}
|
|
|
|
@test "SQS: get queue attributes" {
|
|
out=$(aws_cmd sqs create-queue --queue-name "$QUEUE_NAME")
|
|
QUEUE_URL=$(json_get "$out" '.QueueUrl')
|
|
|
|
run aws_cmd sqs get-queue-attributes --queue-url "$QUEUE_URL" --attribute-names ApproximateNumberOfMessages
|
|
assert_success
|
|
}
|
|
|
|
@test "SQS: delete queue" {
|
|
out=$(aws_cmd sqs create-queue --queue-name "$QUEUE_NAME")
|
|
QUEUE_URL=$(json_get "$out" '.QueueUrl')
|
|
|
|
run aws_cmd sqs delete-queue --queue-url "$QUEUE_URL"
|
|
assert_success
|
|
QUEUE_URL=""
|
|
}
|
|
|
|
@test "SQS: tags set at CreateQueue are returned by ListQueueTags" {
|
|
# Regression test for https://github.com/floci-io/floci/issues/699
|
|
run aws_cmd sqs create-queue --queue-name "$QUEUE_NAME" --tags "k1=v1,k2=v2"
|
|
assert_success
|
|
QUEUE_URL=$(json_get "$output" '.QueueUrl')
|
|
[ -n "$QUEUE_URL" ]
|
|
|
|
run aws_cmd sqs list-queue-tags --queue-url "$QUEUE_URL"
|
|
assert_success
|
|
v1=$(json_get "$output" '.Tags.k1')
|
|
v2=$(json_get "$output" '.Tags.k2')
|
|
[ "$v1" = "v1" ]
|
|
[ "$v2" = "v2" ]
|
|
}
|