Skip to content

Commit 2fc79bf

Browse files
authored
Fix incorrect QueueUrl (#8)
Fix incorrect QueueUrl
2 parents 2e5e6ea + b5eb50b commit 2fc79bf

File tree

2 files changed

+44
-12
lines changed

2 files changed

+44
-12
lines changed

worker/worker.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func (worker *Worker) Start(ctx context.Context, h Handler) {
7777
worker.Log.Debug("worker: Start Polling")
7878

7979
params := &sqs.ReceiveMessageInput{
80-
QueueUrl: aws.String(worker.Config.QueueName), // Required
80+
QueueUrl: aws.String(worker.Config.QueueURL), // Required
8181
MaxNumberOfMessages: aws.Int64(worker.Config.MaxNumberOfMessage),
8282
AttributeNames: []*string{
8383
aws.String("All"), // Required
@@ -127,8 +127,8 @@ func (worker *Worker) handleMessage(m *sqs.Message, h Handler) error {
127127
}
128128

129129
params := &sqs.DeleteMessageInput{
130-
QueueUrl: aws.String(worker.Config.QueueName), // Required
131-
ReceiptHandle: m.ReceiptHandle, // Required
130+
QueueUrl: aws.String(worker.Config.QueueURL), // Required
131+
ReceiptHandle: m.ReceiptHandle, // Required
132132
}
133133
_, err = worker.SqsClient.DeleteMessage(params)
134134
if err != nil {

worker/worker_test.go

+41-9
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,31 @@ import (
1010
"github.com/aws/aws-sdk-go/aws"
1111
"github.com/aws/aws-sdk-go/service/sqs"
1212
"github.com/aws/aws-sdk-go/service/sqs/sqsiface"
13+
"github.com/stretchr/testify/assert"
1314
"github.com/stretchr/testify/mock"
1415
)
1516

1617
type mockedSqsClient struct {
1718
Config *aws.Config
1819
Response sqs.ReceiveMessageOutput
1920
sqsiface.SQSAPI
21+
mock.Mock
2022
}
2123

2224
func (c *mockedSqsClient) GetQueueUrl(urlInput *sqs.GetQueueUrlInput) (*sqs.GetQueueUrlOutput, error) {
23-
url := fmt.Sprintf("https://sqs.%v.amazonaws.com/123456789/%v", c.Config.Region, urlInput.QueueName)
25+
url := fmt.Sprintf("https://sqs.%v.amazonaws.com/123456789/%v", *c.Config.Region, *urlInput.QueueName)
2426

2527
return &sqs.GetQueueUrlOutput{QueueUrl: &url}, nil
2628
}
2729

28-
func (c *mockedSqsClient) ReceiveMessage(*sqs.ReceiveMessageInput) (*sqs.ReceiveMessageOutput, error) {
30+
func (c *mockedSqsClient) ReceiveMessage(input *sqs.ReceiveMessageInput) (*sqs.ReceiveMessageOutput, error) {
31+
c.Called(input)
32+
2933
return &c.Response, nil
3034
}
3135

32-
func (c *mockedSqsClient) DeleteMessage(*sqs.DeleteMessageInput) (*sqs.DeleteMessageOutput, error) {
36+
func (c *mockedSqsClient) DeleteMessage(input *sqs.DeleteMessageInput) (*sqs.DeleteMessageOutput, error) {
37+
c.Called(input)
3338
c.Response = sqs.ReceiveMessageOutput{}
3439

3540
return &sqs.DeleteMessageOutput{}, nil
@@ -39,15 +44,15 @@ type mockedHandler struct {
3944
mock.Mock
4045
}
4146

47+
func (mh *mockedHandler) HandleMessage(foo string, qux string) {
48+
mh.Called(foo, qux)
49+
}
50+
4251
type sqsEvent struct {
4352
Foo string `json:"foo"`
4453
Qux string `json:"qux"`
4554
}
4655

47-
func (mh *mockedHandler) HandleMessage(foo string, qux string) {
48-
mh.Called(foo, qux)
49-
}
50-
5156
func TestStart(t *testing.T) {
5257
region := "eu-west-1"
5358
awsConfig := &aws.Config{Region: &region}
@@ -69,10 +74,19 @@ func TestStart(t *testing.T) {
6974
return
7075
})
7176

72-
t.Run("when worker successfully receives a message", func(t *testing.T) {
77+
t.Run("the worker has correct configuration", func(t *testing.T) {
78+
assert.Equal(t, worker.Config.QueueName, "my-sqs-queue", "QueueName has been set properly")
79+
assert.Equal(t, worker.Config.QueueURL, "https://sqs.eu-west-1.amazonaws.com/123456789/my-sqs-queue", "QueueURL has been set properly")
80+
assert.Equal(t, worker.Config.MaxNumberOfMessage, int64(10), "MaxNumberOfMessage has been set properly")
81+
assert.Equal(t, worker.Config.WaitTimeSecond, int64(20), "WaitTimeSecond has been set properly")
82+
})
83+
84+
t.Run("the worker successfully processes a message", func(t *testing.T) {
85+
setupClientSpies(client)
7386
handler.On("HandleMessage", "bar", "baz").Return().Once()
7487
worker.Start(ctx, handlerFunc)
7588

89+
client.AssertExpectations(t)
7690
handler.AssertExpectations(t)
7791
})
7892
}
@@ -83,11 +97,29 @@ func contextAndCancel() (context.Context, context.CancelFunc) {
8397
return context.WithDeadline(context.Background(), delay)
8498
}
8599

86-
func setupMockedSqsClient(awsConfig *aws.Config) sqsiface.SQSAPI {
100+
func setupMockedSqsClient(awsConfig *aws.Config) *mockedSqsClient {
87101
sqsMessage := &sqs.Message{Body: aws.String(`{ "foo": "bar", "qux": "baz" }`)}
88102
sqsResponse := sqs.ReceiveMessageOutput{
89103
Messages: []*sqs.Message{sqsMessage},
90104
}
91105

92106
return &mockedSqsClient{Response: sqsResponse, Config: awsConfig}
93107
}
108+
109+
func setupClientSpies(client *mockedSqsClient) {
110+
url := aws.String("https://sqs.eu-west-1.amazonaws.com/123456789/my-sqs-queue")
111+
receiveInput := &sqs.ReceiveMessageInput{
112+
QueueUrl: url,
113+
MaxNumberOfMessages: aws.Int64(10),
114+
AttributeNames: []*string{
115+
aws.String("All"),
116+
},
117+
WaitTimeSeconds: aws.Int64(10),
118+
}
119+
client.On("ReceiveMessage", receiveInput).Return()
120+
121+
deleteInput := &sqs.DeleteMessageInput{
122+
QueueUrl: url,
123+
}
124+
client.On("DeleteMessage", deleteInput).Return()
125+
}

0 commit comments

Comments
 (0)