shared-sqs: Этап 1 — клон GoAWS, удаление SNS, go build OK
This commit is contained in:
@@ -0,0 +1,329 @@
|
||||
package gosqs
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
"shared-sqs/app/conf"
|
||||
"shared-sqs/app/fixtures"
|
||||
"shared-sqs/app/interfaces"
|
||||
"shared-sqs/app/models"
|
||||
"shared-sqs/app/test"
|
||||
"shared-sqs/app/utils"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestDeleteMessageBatchV1_success_all_message(t *testing.T) {
|
||||
models.CurrentEnvironment = fixtures.LOCAL_ENVIRONMENT
|
||||
|
||||
defer func() {
|
||||
models.ResetApp()
|
||||
utils.REQUEST_TRANSFORMER = utils.TransformRequest
|
||||
}()
|
||||
|
||||
q := &models.Queue{
|
||||
Name: "testing",
|
||||
Messages: []models.SqsMessage{
|
||||
{
|
||||
MessageBody: "test%20message%20body%201",
|
||||
ReceiptHandle: "test1",
|
||||
},
|
||||
{
|
||||
MessageBody: "test%20message%20body%202",
|
||||
ReceiptHandle: "test2",
|
||||
},
|
||||
{
|
||||
MessageBody: "test%20message%20body%203",
|
||||
ReceiptHandle: "test3",
|
||||
},
|
||||
},
|
||||
}
|
||||
models.SyncQueues.Queues["testing"] = q
|
||||
|
||||
utils.REQUEST_TRANSFORMER = func(resultingStruct interfaces.AbstractRequestBody, req *http.Request, emptyRequestValid bool) (success bool) {
|
||||
v := resultingStruct.(*models.DeleteMessageBatchRequest)
|
||||
*v = models.DeleteMessageBatchRequest{
|
||||
Entries: []models.DeleteMessageBatchRequestEntry{
|
||||
{
|
||||
Id: "delete-test-1",
|
||||
ReceiptHandle: "test1",
|
||||
},
|
||||
{
|
||||
Id: "delete-test-2",
|
||||
ReceiptHandle: "test2",
|
||||
},
|
||||
{
|
||||
Id: "delete-test-3",
|
||||
ReceiptHandle: "test3",
|
||||
},
|
||||
},
|
||||
QueueUrl: fmt.Sprintf("%s/%s", fixtures.BASE_URL, "testing"),
|
||||
}
|
||||
return true
|
||||
}
|
||||
_, request2 := test.GenerateRequestInfo(
|
||||
"POST",
|
||||
"/",
|
||||
nil,
|
||||
true)
|
||||
|
||||
status, response2 := DeleteMessageBatchV1(request2)
|
||||
deleteMessageBatchResponse := response2.(models.DeleteMessageBatchResponse)
|
||||
assert.Equal(t, status, http.StatusOK)
|
||||
assert.Equal(t, "delete-test-1", deleteMessageBatchResponse.Result.Successful[0].Id)
|
||||
assert.Equal(t, "delete-test-2", deleteMessageBatchResponse.Result.Successful[1].Id)
|
||||
assert.Equal(t, "delete-test-3", deleteMessageBatchResponse.Result.Successful[2].Id)
|
||||
assert.Empty(t, deleteMessageBatchResponse.Result.Failed)
|
||||
assert.Empty(t, models.SyncQueues.Queues["testing"].Messages)
|
||||
}
|
||||
func TestDeleteMessageBatchV1_success_not_found_message(t *testing.T) {
|
||||
models.CurrentEnvironment = fixtures.LOCAL_ENVIRONMENT
|
||||
|
||||
defer func() {
|
||||
models.ResetApp()
|
||||
utils.REQUEST_TRANSFORMER = utils.TransformRequest
|
||||
}()
|
||||
|
||||
q := &models.Queue{
|
||||
Name: "testing",
|
||||
Messages: []models.SqsMessage{
|
||||
{
|
||||
MessageBody: "test%20message%20body%201",
|
||||
ReceiptHandle: "test1",
|
||||
},
|
||||
{
|
||||
MessageBody: "test%20message%20body%203",
|
||||
ReceiptHandle: "test3",
|
||||
},
|
||||
},
|
||||
}
|
||||
models.SyncQueues.Queues["testing"] = q
|
||||
|
||||
utils.REQUEST_TRANSFORMER = func(resultingStruct interfaces.AbstractRequestBody, req *http.Request, emptyRequestValid bool) (success bool) {
|
||||
v := resultingStruct.(*models.DeleteMessageBatchRequest)
|
||||
*v = models.DeleteMessageBatchRequest{
|
||||
Entries: []models.DeleteMessageBatchRequestEntry{
|
||||
{
|
||||
Id: "delete-test-1",
|
||||
ReceiptHandle: "test1",
|
||||
},
|
||||
{
|
||||
Id: "delete-test-2",
|
||||
ReceiptHandle: "test2",
|
||||
},
|
||||
{
|
||||
Id: "delete-test-3",
|
||||
ReceiptHandle: "test3",
|
||||
},
|
||||
},
|
||||
QueueUrl: fmt.Sprintf("%s/%s", fixtures.BASE_URL, "testing"),
|
||||
}
|
||||
return true
|
||||
}
|
||||
_, request := test.GenerateRequestInfo(
|
||||
"POST",
|
||||
"/",
|
||||
nil,
|
||||
true)
|
||||
|
||||
status, response := DeleteMessageBatchV1(request)
|
||||
deleteMessageBatchResponse := response.(models.DeleteMessageBatchResponse)
|
||||
assert.Equal(t, status, http.StatusOK)
|
||||
assert.Equal(t, "delete-test-1", deleteMessageBatchResponse.Result.Successful[0].Id)
|
||||
assert.Equal(t, "delete-test-3", deleteMessageBatchResponse.Result.Successful[1].Id)
|
||||
assert.Equal(t, "1", deleteMessageBatchResponse.Result.Failed[0].Code)
|
||||
assert.Equal(t, "delete-test-2", deleteMessageBatchResponse.Result.Failed[0].Id)
|
||||
assert.Equal(t, "Message not found", deleteMessageBatchResponse.Result.Failed[0].Message)
|
||||
assert.True(t, deleteMessageBatchResponse.Result.Failed[0].SenderFault)
|
||||
assert.Empty(t, models.SyncQueues.Queues["testing"].Messages)
|
||||
}
|
||||
|
||||
func TestDeleteMessageBatchV1_error_not_found_queue(t *testing.T) {
|
||||
models.CurrentEnvironment = fixtures.LOCAL_ENVIRONMENT
|
||||
|
||||
defer func() {
|
||||
models.ResetApp()
|
||||
utils.REQUEST_TRANSFORMER = utils.TransformRequest
|
||||
}()
|
||||
utils.REQUEST_TRANSFORMER = func(resultingStruct interfaces.AbstractRequestBody, req *http.Request, emptyRequestValid bool) (success bool) {
|
||||
v := resultingStruct.(*models.DeleteMessageBatchRequest)
|
||||
*v = models.DeleteMessageBatchRequest{
|
||||
Entries: []models.DeleteMessageBatchRequestEntry{
|
||||
{
|
||||
Id: "delete-test-1",
|
||||
ReceiptHandle: "test1",
|
||||
},
|
||||
{
|
||||
Id: "delete-test-2",
|
||||
ReceiptHandle: "test2",
|
||||
},
|
||||
{
|
||||
Id: "delete-test-3",
|
||||
ReceiptHandle: "test3",
|
||||
},
|
||||
},
|
||||
QueueUrl: fmt.Sprintf("%s/%s", fixtures.BASE_URL, "not-exist-queue"),
|
||||
}
|
||||
return true
|
||||
}
|
||||
_, r := test.GenerateRequestInfo(
|
||||
"POST",
|
||||
"/",
|
||||
nil,
|
||||
true)
|
||||
|
||||
status, _ := DeleteMessageBatchV1(r)
|
||||
assert.Equal(t, status, http.StatusBadRequest)
|
||||
|
||||
}
|
||||
|
||||
func TestDeleteMessageBatchV1_error_no_entry(t *testing.T) {
|
||||
conf.LoadYamlConfig("../conf/mock-data/mock-config.yaml", "BaseUnitTests")
|
||||
|
||||
defer func() {
|
||||
models.ResetApp()
|
||||
utils.REQUEST_TRANSFORMER = utils.TransformRequest
|
||||
}()
|
||||
|
||||
utils.REQUEST_TRANSFORMER = func(resultingStruct interfaces.AbstractRequestBody, req *http.Request, emptyRequestValid bool) (success bool) {
|
||||
v := resultingStruct.(*models.DeleteMessageBatchRequest)
|
||||
*v = models.DeleteMessageBatchRequest{
|
||||
Entries: make([]models.DeleteMessageBatchRequestEntry, 0),
|
||||
QueueUrl: fmt.Sprintf("%s/%s", fixtures.BASE_URL, "unit-queue1"),
|
||||
}
|
||||
return true
|
||||
}
|
||||
_, r := test.GenerateRequestInfo(
|
||||
"POST",
|
||||
"/",
|
||||
nil,
|
||||
true)
|
||||
|
||||
status, _ := DeleteMessageBatchV1(r)
|
||||
assert.Equal(t, status, http.StatusBadRequest)
|
||||
}
|
||||
|
||||
func TestDeleteMessageBatchV1_error_too_many_entries(t *testing.T) {
|
||||
conf.LoadYamlConfig("../conf/mock-data/mock-config.yaml", "BaseUnitTests")
|
||||
|
||||
defer func() {
|
||||
models.ResetApp()
|
||||
utils.REQUEST_TRANSFORMER = utils.TransformRequest
|
||||
}()
|
||||
|
||||
utils.REQUEST_TRANSFORMER = func(resultingStruct interfaces.AbstractRequestBody, req *http.Request, emptyRequestValid bool) (success bool) {
|
||||
v := resultingStruct.(*models.DeleteMessageBatchRequest)
|
||||
*v = models.DeleteMessageBatchRequest{
|
||||
Entries: []models.DeleteMessageBatchRequestEntry{
|
||||
{
|
||||
Id: "test-1",
|
||||
ReceiptHandle: "test-1",
|
||||
},
|
||||
{
|
||||
Id: "test-2",
|
||||
ReceiptHandle: "test-2",
|
||||
},
|
||||
{
|
||||
Id: "test-3",
|
||||
ReceiptHandle: "test-3",
|
||||
},
|
||||
{
|
||||
Id: "test-4",
|
||||
ReceiptHandle: "test-4",
|
||||
},
|
||||
{
|
||||
Id: "test-5",
|
||||
ReceiptHandle: "test-5",
|
||||
},
|
||||
{
|
||||
Id: "test-6",
|
||||
ReceiptHandle: "test-6",
|
||||
},
|
||||
{
|
||||
Id: "test-7",
|
||||
ReceiptHandle: "test-7",
|
||||
},
|
||||
{
|
||||
Id: "test-8",
|
||||
ReceiptHandle: "test-8",
|
||||
},
|
||||
{
|
||||
Id: "test-9",
|
||||
ReceiptHandle: "test-9",
|
||||
},
|
||||
{
|
||||
Id: "test-10",
|
||||
ReceiptHandle: "test-10",
|
||||
},
|
||||
{
|
||||
Id: "test-11",
|
||||
ReceiptHandle: "test-11",
|
||||
},
|
||||
},
|
||||
QueueUrl: fmt.Sprintf("%s/%s", fixtures.BASE_URL, "unit-queue1"),
|
||||
}
|
||||
return true
|
||||
}
|
||||
_, r := test.GenerateRequestInfo(
|
||||
"POST",
|
||||
"/",
|
||||
nil,
|
||||
true)
|
||||
|
||||
status, _ := DeleteMessageBatchV1(r)
|
||||
assert.Equal(t, status, http.StatusBadRequest)
|
||||
}
|
||||
|
||||
func TestDeleteMessageBatchV1_Error_IdNotDistinct(t *testing.T) {
|
||||
conf.LoadYamlConfig("../conf/mock-data/mock-config.yaml", "BaseUnitTests")
|
||||
|
||||
defer func() {
|
||||
models.ResetApp()
|
||||
utils.REQUEST_TRANSFORMER = utils.TransformRequest
|
||||
}()
|
||||
|
||||
utils.REQUEST_TRANSFORMER = func(resultingStruct interfaces.AbstractRequestBody, req *http.Request, emptyRequestValid bool) (success bool) {
|
||||
v := resultingStruct.(*models.DeleteMessageBatchRequest)
|
||||
*v = models.DeleteMessageBatchRequest{
|
||||
Entries: []models.DeleteMessageBatchRequestEntry{
|
||||
{
|
||||
Id: "delete-test-1",
|
||||
ReceiptHandle: "test1",
|
||||
},
|
||||
{
|
||||
Id: "delete-test-1",
|
||||
ReceiptHandle: "test2",
|
||||
},
|
||||
},
|
||||
QueueUrl: fmt.Sprintf("%s/%s", fixtures.BASE_URL, "unit-queue1"),
|
||||
}
|
||||
return true
|
||||
}
|
||||
_, r := test.GenerateRequestInfo(
|
||||
"POST",
|
||||
"/",
|
||||
nil,
|
||||
true)
|
||||
|
||||
status, _ := DeleteMessageBatchV1(r)
|
||||
assert.Equal(t, http.StatusBadRequest, status)
|
||||
}
|
||||
|
||||
func TestDeleteMessageBatchV1_Error_transformer(t *testing.T) {
|
||||
conf.LoadYamlConfig("../conf/mock-data/mock-config.yaml", "BaseUnitTests")
|
||||
defer func() {
|
||||
models.ResetApp()
|
||||
utils.REQUEST_TRANSFORMER = utils.TransformRequest
|
||||
}()
|
||||
|
||||
utils.REQUEST_TRANSFORMER = func(resultingStruct interfaces.AbstractRequestBody, req *http.Request, emptyRequestValid bool) (success bool) {
|
||||
return false
|
||||
}
|
||||
|
||||
_, r := test.GenerateRequestInfo("POST", "/", nil, true)
|
||||
status, _ := DeleteMessageBatchV1(r)
|
||||
|
||||
assert.Equal(t, http.StatusBadRequest, status)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user