chore: initial import from sless/shared-sqs (v0.1.14)
- Standalone SQS-service repository - Multi-tenant message queue service, AWS SQS compatible - Based on GoAws, with mutable tenants, auth, WebUI, Redis persistence - Ready for independent development and deployment - See doc/ and README.md for architecture and usage
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
package gosqs
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"shared-sqs/app/test"
|
||||
|
||||
"shared-sqs/app/conf"
|
||||
|
||||
"shared-sqs/app/fixtures"
|
||||
"shared-sqs/app/interfaces"
|
||||
"shared-sqs/app/models"
|
||||
"shared-sqs/app/utils"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestPurgeQueueV1_success(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.PurgeQueueRequest)
|
||||
*v = models.PurgeQueueRequest{
|
||||
QueueUrl: fmt.Sprintf("%s/%s", fixtures.BASE_URL, "unit-queue1"),
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// Put a message on the queue
|
||||
targetQueue := models.SyncQueues.Queues["unit-queue1"]
|
||||
models.SyncQueues.Lock()
|
||||
targetQueue.Messages = []models.SqsMessage{models.SqsMessage{}}
|
||||
targetQueue.Duplicates = map[string]time.Time{
|
||||
"dedupe-id": time.Now(),
|
||||
}
|
||||
models.SyncQueues.Unlock()
|
||||
|
||||
expectedResponse := models.PurgeQueueResponse{
|
||||
Xmlns: models.BaseXmlns,
|
||||
Metadata: models.BaseResponseMetadata,
|
||||
}
|
||||
|
||||
_, r := test.GenerateRequestInfo("POST", "/", nil, true)
|
||||
code, response := PurgeQueueV1(r)
|
||||
|
||||
assert.Equal(t, http.StatusOK, code)
|
||||
assert.Equal(t, expectedResponse, response)
|
||||
|
||||
assert.Nil(t, targetQueue.Messages)
|
||||
assert.Equal(t, map[string]time.Time{}, targetQueue.Duplicates)
|
||||
}
|
||||
|
||||
func TestPurgeQueueV1_success_no_messages_on_queue(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.PurgeQueueRequest)
|
||||
*v = models.PurgeQueueRequest{
|
||||
QueueUrl: fmt.Sprintf("%s/%s", fixtures.BASE_URL, "unit-queue1"),
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
expectedResponse := models.PurgeQueueResponse{
|
||||
Xmlns: models.BaseXmlns,
|
||||
Metadata: models.BaseResponseMetadata,
|
||||
}
|
||||
|
||||
_, r := test.GenerateRequestInfo("POST", "/", nil, true)
|
||||
code, response := PurgeQueueV1(r)
|
||||
|
||||
assert.Equal(t, http.StatusOK, code)
|
||||
assert.Equal(t, expectedResponse, response)
|
||||
|
||||
targetQueue := models.SyncQueues.Queues["unit-queue1"]
|
||||
assert.Nil(t, targetQueue.Messages)
|
||||
assert.Equal(t, map[string]time.Time{}, targetQueue.Duplicates)
|
||||
}
|
||||
|
||||
func TestPurgeQueueV1_request_transformer_error(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)
|
||||
code, _ := PurgeQueueV1(r)
|
||||
|
||||
assert.Equal(t, http.StatusBadRequest, code)
|
||||
}
|
||||
|
||||
func TestPurgeQueueV1_requested_queue_does_not_exist(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.PurgeQueueRequest)
|
||||
*v = models.PurgeQueueRequest{
|
||||
QueueUrl: fmt.Sprintf("%s/%s", fixtures.BASE_URL, "garbage"),
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
_, r := test.GenerateRequestInfo("POST", "/", nil, true)
|
||||
code, _ := PurgeQueueV1(r)
|
||||
|
||||
assert.Equal(t, http.StatusBadRequest, code)
|
||||
}
|
||||
Reference in New Issue
Block a user