Skip to content

Commit ce5a493

Browse files
authored
* fix policy resource (#336)
* * fix policy resource * * fix policy resource
1 parent 8ebd137 commit ce5a493

File tree

5 files changed

+21
-22
lines changed

5 files changed

+21
-22
lines changed

packages/sqs/lib/utils/sqsAttributeUtils.spec.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ describe('sqsAttributeUtils', () => {
3636
const result = generateQueuePolicyFromPolicyConfig(testQueueArn, policyConfig)
3737

3838
expect(result).toMatchInlineSnapshot(
39-
`"{"Version":"2012-10-17","Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"]}]}"`,
39+
`"{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue"}]}"`,
4040
)
4141
})
4242

@@ -53,7 +53,7 @@ describe('sqsAttributeUtils', () => {
5353
const result = generateQueuePolicyFromPolicyConfig(testQueueArn, policyConfig)
5454

5555
expect(result).toMatchInlineSnapshot(
56-
`"{"Version":"2012-10-17","Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue","Statement":[{"Effect":"Deny","Principal":{"AWS":"arn:aws:iam::123456789012:user/test-user"},"Action":["sqs:SendMessage"]}]}"`,
56+
`"{"Version":"2012-10-17","Statement":[{"Effect":"Deny","Principal":{"AWS":"arn:aws:iam::123456789012:user/test-user"},"Action":["sqs:SendMessage"],"Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue"}]}"`,
5757
)
5858
})
5959

@@ -77,7 +77,7 @@ describe('sqsAttributeUtils', () => {
7777
const result = generateQueuePolicyFromPolicyConfig(testQueueArn, policyConfig)
7878

7979
expect(result).toMatchInlineSnapshot(
80-
`"{"Version":"2012-10-17","Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::123456789012:user/user1"},"Action":["sqs:SendMessage"]},{"Effect":"Deny","Principal":{"AWS":"arn:aws:iam::123456789012:user/user2"},"Action":["sqs:ReceiveMessage"]}]}"`,
80+
`"{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::123456789012:user/user1"},"Action":["sqs:SendMessage"],"Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue"},{"Effect":"Deny","Principal":{"AWS":"arn:aws:iam::123456789012:user/user2"},"Action":["sqs:ReceiveMessage"],"Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue"}]}"`,
8181
)
8282
})
8383

@@ -89,7 +89,7 @@ describe('sqsAttributeUtils', () => {
8989
const result = generateQueuePolicyFromPolicyConfig(testQueueArn, policyConfig)
9090

9191
expect(result).toMatchInlineSnapshot(
92-
`"{"Version":"2012-10-17","Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"]}]}"`,
92+
`"{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue"}]}"`,
9393
)
9494
})
9595

@@ -101,7 +101,7 @@ describe('sqsAttributeUtils', () => {
101101
const result = generateQueuePolicyFromPolicyConfig(testQueueArn, policyConfig)
102102

103103
expect(result).toMatchInlineSnapshot(
104-
`"{"Version":"2012-10-17","Resource":"arn:aws:sqs:*:*:*","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"]}]}"`,
104+
`"{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Resource":"arn:aws:sqs:*:*:*"}]}"`,
105105
)
106106
})
107107

@@ -114,7 +114,7 @@ describe('sqsAttributeUtils', () => {
114114
const result = generateQueuePolicyFromPolicyConfig(testQueueArn, policyConfig)
115115

116116
expect(result).toMatchInlineSnapshot(
117-
`"{"Version":"2012-10-17","Resource":"arn:aws:sqs:us-east-1:123456789012:custom-queue","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"]}]}"`,
117+
`"{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Resource":"arn:aws:sqs:us-east-1:123456789012:custom-queue"}]}"`,
118118
)
119119
})
120120

@@ -142,7 +142,7 @@ describe('sqsAttributeUtils', () => {
142142
const result = generateQueuePolicyFromPolicyConfig(testQueueArn, policyConfig)
143143

144144
expect(result).toMatchInlineSnapshot(
145-
`"{"Version":"2012-10-17","Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::123456789012:user/user1"},"Action":["sqs:SendMessage"]},{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:ReceiveMessage"]},{"Effect":"Deny","Principal":{"AWS":"*"},"Action":["sqs:DeleteMessage"]}]}"`,
145+
`"{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::123456789012:user/user1"},"Action":["sqs:SendMessage"],"Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue"},{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:ReceiveMessage"],"Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue"},{"Effect":"Deny","Principal":{"AWS":"*"},"Action":["sqs:DeleteMessage"],"Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue"}]}"`,
146146
)
147147
})
148148

@@ -155,7 +155,7 @@ describe('sqsAttributeUtils', () => {
155155
const result = generateQueuePolicyFromPolicyConfig(testQueueArn, policyConfig)
156156

157157
expect(result).toMatchInlineSnapshot(
158-
`"{"Version":"2012-10-17","Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"]}]}"`,
158+
`"{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":["sqs:SendMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl"],"Resource":"arn:aws:sqs:eu-central-1:632374391739:test-queue"}]}"`,
159159
)
160160
})
161161
})

packages/sqs/lib/utils/sqsAttributeUtils.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,23 @@ export function generateQueuePolicyFromPolicyConfig(
1818
queueArn: string,
1919
policyConfig: SQSPolicyConfig,
2020
): string {
21+
const resource =
22+
policyConfig.resource === SQS_RESOURCE_CURRENT_QUEUE
23+
? queueArn
24+
: policyConfig.resource === SQS_RESOURCE_ANY
25+
? `arn:aws:sqs:*:*:*`
26+
: policyConfig.resource
2127
const statements = (
2228
Array.isArray(policyConfig.statements) ? policyConfig.statements : [policyConfig.statements]
2329
).map((statement) => ({
2430
Effect: statement?.Effect ?? 'Allow',
2531
Principal: { AWS: statement?.Principal ?? '*' },
2632
Action: statement?.Action ?? ['sqs:SendMessage', 'sqs:GetQueueAttributes', 'sqs:GetQueueUrl'],
33+
Resource: resource,
2734
}))
2835

29-
const resource =
30-
policyConfig.resource === SQS_RESOURCE_CURRENT_QUEUE
31-
? queueArn
32-
: policyConfig.resource === SQS_RESOURCE_ANY
33-
? `arn:aws:sqs:*:*:*`
34-
: policyConfig.resource
35-
3636
return JSON.stringify({
3737
Version: POLICY_VERSION,
38-
Resource: resource,
3938
Statement: statements,
4039
})
4140
}

packages/sqs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@message-queue-toolkit/sqs",
3-
"version": "22.2.0",
3+
"version": "22.2.1",
44
"private": false,
55
"license": "MIT",
66
"description": "SQS adapter for message-queue-toolkit",

packages/sqs/test/consumers/SqsPermissionConsumer.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,6 @@ describe('SqsPermissionConsumer', () => {
334334
const policy = JSON.parse(attributes.result?.attributes?.Policy || '{}')
335335
expect(policy).toMatchInlineSnapshot(`
336336
{
337-
"Resource": "arn:aws:sqs:eu-west-1:000000000000:myTestQueue",
338337
"Statement": [
339338
{
340339
"Action": [
@@ -345,6 +344,7 @@ describe('SqsPermissionConsumer', () => {
345344
"Principal": {
346345
"AWS": "arn:aws:iam::123456789012:user/test-user",
347346
},
347+
"Resource": "arn:aws:sqs:eu-west-1:000000000000:myTestQueue",
348348
},
349349
],
350350
"Version": "2012-10-17",
@@ -398,7 +398,7 @@ describe('SqsPermissionConsumer', () => {
398398
// Verify updated policy was applied
399399
const attributes = await getQueueAttributes(sqsClient, updatedConsumer.queueProps.url)
400400
const policy = JSON.parse(attributes.result?.attributes?.Policy || '{}')
401-
expect(policy.Resource).toBe('*')
401+
expect(policy.Statement[0].Resource).toBe('*')
402402

403403
await updatedConsumer.close()
404404
})

packages/sqs/test/publishers/SqsPermissionPublisher.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,10 +316,9 @@ describe('SqsPermissionPublisher', () => {
316316
const policy = JSON.parse(attributes.result?.attributes?.Policy || '{}')
317317

318318
expect(policy.Version).toBe('2012-10-17')
319-
expect(policy.Resource).toBe(newPublisher.queueProps.arn)
319+
expect(policy.Statement[0].Resource).toBe(newPublisher.queueProps.arn)
320320
expect(policy).toMatchInlineSnapshot(`
321321
{
322-
"Resource": "arn:aws:sqs:eu-west-1:000000000000:someQueue",
323322
"Statement": [
324323
{
325324
"Action": [
@@ -330,6 +329,7 @@ describe('SqsPermissionPublisher', () => {
330329
"Principal": {
331330
"AWS": "arn:aws:iam::123456789012:user/test-user",
332331
},
332+
"Resource": "arn:aws:sqs:eu-west-1:000000000000:someQueue",
333333
},
334334
],
335335
"Version": "2012-10-17",
@@ -380,7 +380,7 @@ describe('SqsPermissionPublisher', () => {
380380
// Verify updated policy was applied
381381
const attributes = await getQueueAttributes(sqsClient, updatedPublisher.queueProps.url)
382382
const policy = JSON.parse(attributes.result?.attributes?.Policy || '{}')
383-
expect(policy.Resource).toBe('*')
383+
expect(policy.Statement[0].Resource).toBe('*')
384384
})
385385
})
386386
})

0 commit comments

Comments
 (0)