Skip to content

Commit bbd2810

Browse files
authored
Fix CI (#72)
* fix ci, use swiftlang workflows * typo * typo * fix format * use 6.0-noble for format check * fix format
1 parent cfd688e commit bbd2810

File tree

4 files changed

+166
-142
lines changed

4 files changed

+166
-142
lines changed

.github/workflows/pull_request.yml

+23-22
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
11
name: PR
22

33
on:
4-
pull_request:
5-
types: [opened, reopened, synchronize]
4+
pull_request:
5+
types: [opened, reopened, synchronize]
66

77
jobs:
8-
soundness:
9-
name: Soundness
10-
uses: apple/swift-nio/.github/workflows/soundness.yml@main
11-
with:
12-
license_header_check_project_name: "SwiftAWSLambdaRuntime"
13-
shell_check_enabled: false
14-
api_breakage_check_container_image: "swift:6.0-noble"
15-
docs_check_container_image: "swift:6.0-noble"
8+
soundness:
9+
name: Soundness
10+
uses: swiftlang/github-workflows/.github/workflows/soundness.yml@main
11+
with:
12+
license_header_check_project_name: "SwiftAWSLambdaRuntime"
13+
shell_check_enabled: false
14+
python_lint_check_enabled: false
15+
api_breakage_check_container_image: "swift:6.0-noble"
16+
docs_check_container_image: "swift:6.0-noble"
17+
format_check_container_image: "swift:6.0-noble"
1618

17-
unit-tests:
18-
name: Unit tests
19-
uses: apple/swift-nio/.github/workflows/unit_tests.yml@main
20-
with:
21-
linux_5_8_enabled: true
22-
linux_5_9_enabled: true
23-
linux_5_10_enabled: true
24-
linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error"
25-
linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error"
19+
unit-tests:
20+
name: Unit tests
21+
uses: apple/swift-nio/.github/workflows/unit_tests.yml@main
22+
with:
23+
linux_5_9_enabled: false
24+
linux_5_10_enabled: false
25+
linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error"
26+
linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error"
2627

27-
swift-6-language-mode:
28-
name: Swift 6 Language Mode
29-
uses: apple/swift-nio/.github/workflows/swift_6_language_mode.yml@main
28+
swift-6-language-mode:
29+
name: Swift 6 Language Mode
30+
uses: apple/swift-nio/.github/workflows/swift_6_language_mode.yml@main

Sources/AWSLambdaEvents/AWSRegion.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public struct AWSRegion: RawRepresentable, Equatable, Sendable {
5858
Self.sa_east_1,
5959
Self.me_central_1,
6060
Self.me_south_1,
61-
Self.il_central_1
61+
Self.il_central_1,
6262
]
6363

6464
public static var af_south_1: Self { AWSRegion(rawValue: "af-south-1")! }

Sources/AWSLambdaEvents/Cloudwatch.swift

+35-15
Original file line numberDiff line numberDiff line change
@@ -140,16 +140,36 @@ public enum CloudwatchDetails {
140140

141141
/// https://docs.aws.amazon.com/AmazonS3/latest/userguide/ev-events.html
142142

143-
public typealias CloudWatchS3ObjectCreatedNotificationEvent = CloudwatchEvent<CloudwatchDetails.S3.ObjectCreatedNotification>
144-
public typealias CloudWatchS3ObjectDeletedNotificationEvent = CloudwatchEvent<CloudwatchDetails.S3.ObjectDeletedNotification>
145-
public typealias CloudWatchS3ObjectRestoreInitiatedNotificationEvent = CloudwatchEvent<CloudwatchDetails.S3.ObjectRestoreInitiatedNotification>
146-
public typealias CloudWatchS3ObjectRestoreCompletedNotificationEvent = CloudwatchEvent<CloudwatchDetails.S3.ObjectRestoreCompletedNotification>
147-
public typealias CloudWatchS3ObjectRestoreExpiredNotificationEvent = CloudwatchEvent<CloudwatchDetails.S3.ObjectRestoreExpiredNotification>
148-
public typealias CloudWatchS3ObjectStorageClassChangedNotificationEvent = CloudwatchEvent<CloudwatchDetails.S3.ObjectStorageClassChangedNotification>
149-
public typealias CloudWatchS3ObjectAccessTierChangedNotificationEvent = CloudwatchEvent<CloudwatchDetails.S3.ObjectAccessTierChangedNotification>
150-
public typealias CloudWatchS3ObjectACLUpdatedNotificationEvent = CloudwatchEvent<CloudwatchDetails.S3.ObjectACLUpdatedNotification>
151-
public typealias CloudWatchS3ObjectTagsAddedNotificationEvent = CloudwatchEvent<CloudwatchDetails.S3.ObjectTagsAddedNotification>
152-
public typealias CloudWatchS3ObjectTagsDeletedNotificationEvent = CloudwatchEvent<CloudwatchDetails.S3.ObjectTagsDeletedNotification>
143+
public typealias CloudWatchS3ObjectCreatedNotificationEvent = CloudwatchEvent<
144+
CloudwatchDetails.S3.ObjectCreatedNotification
145+
>
146+
public typealias CloudWatchS3ObjectDeletedNotificationEvent = CloudwatchEvent<
147+
CloudwatchDetails.S3.ObjectDeletedNotification
148+
>
149+
public typealias CloudWatchS3ObjectRestoreInitiatedNotificationEvent = CloudwatchEvent<
150+
CloudwatchDetails.S3.ObjectRestoreInitiatedNotification
151+
>
152+
public typealias CloudWatchS3ObjectRestoreCompletedNotificationEvent = CloudwatchEvent<
153+
CloudwatchDetails.S3.ObjectRestoreCompletedNotification
154+
>
155+
public typealias CloudWatchS3ObjectRestoreExpiredNotificationEvent = CloudwatchEvent<
156+
CloudwatchDetails.S3.ObjectRestoreExpiredNotification
157+
>
158+
public typealias CloudWatchS3ObjectStorageClassChangedNotificationEvent = CloudwatchEvent<
159+
CloudwatchDetails.S3.ObjectStorageClassChangedNotification
160+
>
161+
public typealias CloudWatchS3ObjectAccessTierChangedNotificationEvent = CloudwatchEvent<
162+
CloudwatchDetails.S3.ObjectAccessTierChangedNotification
163+
>
164+
public typealias CloudWatchS3ObjectACLUpdatedNotificationEvent = CloudwatchEvent<
165+
CloudwatchDetails.S3.ObjectACLUpdatedNotification
166+
>
167+
public typealias CloudWatchS3ObjectTagsAddedNotificationEvent = CloudwatchEvent<
168+
CloudwatchDetails.S3.ObjectTagsAddedNotification
169+
>
170+
public typealias CloudWatchS3ObjectTagsDeletedNotificationEvent = CloudwatchEvent<
171+
CloudwatchDetails.S3.ObjectTagsDeletedNotification
172+
>
153173

154174
extension CloudwatchDetails {
155175
public enum S3: Sendable {
@@ -185,7 +205,7 @@ extension CloudwatchDetails {
185205

186206
public let version: String
187207
public let bucket: Bucket
188-
public let object: Object
208+
public let object: Object
189209
public let requestId: String
190210
public let requester: String
191211
public let sourceIpAddress: String
@@ -194,7 +214,7 @@ extension CloudwatchDetails {
194214
enum CodingKeys: String, CodingKey {
195215
case version
196216
case bucket
197-
case object
217+
case object
198218
case requestId = "request-id"
199219
case requester
200220
case sourceIpAddress = "source-ip-address"
@@ -235,7 +255,7 @@ extension CloudwatchDetails {
235255

236256
public let version: String
237257
public let bucket: Bucket
238-
public let object: Object
258+
public let object: Object
239259
public let requestId: String
240260
public let requester: String
241261
public let sourceIpAddress: String
@@ -245,7 +265,7 @@ extension CloudwatchDetails {
245265
enum CodingKeys: String, CodingKey {
246266
case version
247267
case bucket
248-
case object
268+
case object
249269
case requestId = "request-id"
250270
case requester
251271
case sourceIpAddress = "source-ip-address"
@@ -344,7 +364,7 @@ extension CloudwatchDetails {
344364
public let object: Object
345365
public let requestId: String
346366
public let requester: String
347-
@ISO8601Coding
367+
@ISO8601Coding
348368
public var restoreExpiryTime: Date
349369
public let sourceStorageClass: SourceStorageClass
350370

Tests/AWSLambdaEventsTests/CloudwatchTests.swift

+107-104
Original file line numberDiff line numberDiff line change
@@ -101,110 +101,113 @@ class CloudwatchTests: XCTestCase {
101101
XCTAssertEqual(event.detail.instanceId, "0")
102102
XCTAssertEqual(event.detail.action, .terminate)
103103
}
104-
105-
func testS3ObjectCreatedEventFromJSON() {
106-
let eventBody = CloudwatchTests.eventBody(
107-
type: CloudwatchDetails.S3.ObjectCreatedNotification.name,
108-
details: "{ \"version\": \"0\", \"bucket\": { \"name\": \"amzn-s3-demo-bucket1\" }, \"object\": { \"key\": \"example-key\", \"size\":5, \"etag\": \"b1946ac92492d2347c6235b4d2611184\", \"version-id\": \"IYV3p45BT0ac8hjHg1houSdS1a.Mro8e\", \"sequencer\": \"617f08299329d189\" }, \"request-id\": \"N4N7GDK58NMKJ12R\", \"requester\": \"123456789012\", \"source-ip-address\": \"1.2.3.4\", \"reason\": \"PutObject\" }"
109-
110-
)
111-
let data = eventBody.data(using: .utf8)!
112-
var maybeEvent: CloudWatchS3ObjectCreatedNotificationEvent?
113-
XCTAssertNoThrow(
114-
maybeEvent = try JSONDecoder().decode(CloudWatchS3ObjectCreatedNotificationEvent.self, from: data)
115-
)
116-
117-
guard let event = maybeEvent else {
118-
return XCTFail("Expected to have an event")
119-
}
120-
121-
XCTAssertEqual(event.id, "cdc73f9d-aea9-11e3-9d5a-835b769c0d9c")
122-
XCTAssertEqual(event.source, "aws.events")
123-
XCTAssertEqual(event.accountId, "123456789012")
124-
XCTAssertEqual(event.time, Date(timeIntervalSince1970: 0))
125-
XCTAssertEqual(event.region, .us_east_1)
126-
XCTAssertEqual(event.resources, ["arn:aws:events:us-east-1:123456789012:rule/ExampleRule"])
127-
XCTAssertEqual(event.detail.version, "0")
128-
XCTAssertEqual(event.detail.bucket.name, "amzn-s3-demo-bucket1")
129-
XCTAssertEqual(event.detail.object.key, "example-key")
130-
XCTAssertEqual(event.detail.object.size, 5)
131-
XCTAssertEqual(event.detail.object.etag, "b1946ac92492d2347c6235b4d2611184")
132-
XCTAssertEqual(event.detail.object.versionId, "IYV3p45BT0ac8hjHg1houSdS1a.Mro8e")
133-
XCTAssertEqual(event.detail.object.sequencer, "617f08299329d189")
134-
XCTAssertEqual(event.detail.requestId, "N4N7GDK58NMKJ12R")
135-
XCTAssertEqual(event.detail.requester, "123456789012")
136-
XCTAssertEqual(event.detail.sourceIpAddress, "1.2.3.4")
137-
XCTAssertEqual(event.detail.reason, .putObject)
138-
}
139-
140-
func testS3ObjectDeletedEventFromJSON() {
141-
let eventBody = CloudwatchTests.eventBody(
142-
type: CloudwatchDetails.S3.ObjectDeletedNotification.name,
143-
details: "{ \"version\": \"0\", \"bucket\": { \"name\": \"amzn-s3-demo-bucket1\" }, \"object\": { \"key\": \"example-key\", \"etag\": \"d41d8cd98f00b204e9800998ecf8427e\", \"version-id\": \"1QW9g1Z99LUNbvaaYVpW9xDlOLU.qxgF\", \"sequencer\": \"617f0837b476e463\" }, \"request-id\": \"0BH729840619AG5K\", \"requester\": \"123456789012\", \"source-ip-address\": \"1.2.3.4\", \"reason\": \"DeleteObject\", \"deletion-type\": \"Delete Marker Created\" }"
144-
145-
)
146-
let data = eventBody.data(using: .utf8)!
147-
var maybeEvent: CloudWatchS3ObjectDeletedNotificationEvent?
148-
XCTAssertNoThrow(
149-
maybeEvent = try JSONDecoder().decode(CloudWatchS3ObjectDeletedNotificationEvent.self, from: data)
150-
)
151-
152-
guard let event = maybeEvent else {
153-
return XCTFail("Expected to have an event")
154-
}
155-
156-
XCTAssertEqual(event.id, "cdc73f9d-aea9-11e3-9d5a-835b769c0d9c")
157-
XCTAssertEqual(event.source, "aws.events")
158-
XCTAssertEqual(event.accountId, "123456789012")
159-
XCTAssertEqual(event.time, Date(timeIntervalSince1970: 0))
160-
XCTAssertEqual(event.region, .us_east_1)
161-
XCTAssertEqual(event.resources, ["arn:aws:events:us-east-1:123456789012:rule/ExampleRule"])
162-
XCTAssertEqual(event.detail.version, "0")
163-
XCTAssertEqual(event.detail.bucket.name, "amzn-s3-demo-bucket1")
164-
XCTAssertEqual(event.detail.object.key, "example-key")
165-
XCTAssertEqual(event.detail.object.etag, "d41d8cd98f00b204e9800998ecf8427e")
166-
XCTAssertEqual(event.detail.object.versionId, "1QW9g1Z99LUNbvaaYVpW9xDlOLU.qxgF")
167-
XCTAssertEqual(event.detail.object.sequencer, "617f0837b476e463")
168-
XCTAssertEqual(event.detail.requestId, "0BH729840619AG5K")
169-
XCTAssertEqual(event.detail.requester, "123456789012")
170-
XCTAssertEqual(event.detail.sourceIpAddress, "1.2.3.4")
171-
XCTAssertEqual(event.detail.reason, .deleteObject)
172-
XCTAssertEqual(event.detail.deletionType, .deleteMarkerCreated)
173-
}
174-
175-
func testS3ObjectRestoreCompletedEventFromJSON() {
176-
let eventBody = CloudwatchTests.eventBody(
177-
type: CloudwatchDetails.S3.ObjectRestoreCompletedNotification.name,
178-
details: "{ \"version\": \"0\", \"bucket\": { \"name\": \"amzn-s3-demo-bucket1\" }, \"object\": { \"key\": \"example-key\", \"size\": 5, \"etag\": \"b1946ac92492d2347c6235b4d2611184\", \"version-id\": \"KKsjUC1.6gIjqtvhfg5AdMI0eCePIiT3\" }, \"request-id\": \"189F19CB7FB1B6A4\", \"requester\": \"s3.amazonaws.com\", \"restore-expiry-time\": \"2021-11-13T00:00:00Z\", \"source-storage-class\": \"GLACIER\" }"
179-
180-
)
181-
let data = eventBody.data(using: .utf8)!
182-
var maybeEvent: CloudWatchS3ObjectRestoreCompletedNotificationEvent?
183-
XCTAssertNoThrow(
184-
maybeEvent = try JSONDecoder().decode(CloudWatchS3ObjectRestoreCompletedNotificationEvent.self, from: data)
185-
)
186-
187-
guard let event = maybeEvent else {
188-
return XCTFail("Expected to have an event")
189-
}
190-
191-
XCTAssertEqual(event.id, "cdc73f9d-aea9-11e3-9d5a-835b769c0d9c")
192-
XCTAssertEqual(event.source, "aws.events")
193-
XCTAssertEqual(event.accountId, "123456789012")
194-
XCTAssertEqual(event.time, Date(timeIntervalSince1970: 0))
195-
XCTAssertEqual(event.region, .us_east_1)
196-
XCTAssertEqual(event.resources, ["arn:aws:events:us-east-1:123456789012:rule/ExampleRule"])
197-
XCTAssertEqual(event.detail.version, "0")
198-
XCTAssertEqual(event.detail.bucket.name, "amzn-s3-demo-bucket1")
199-
XCTAssertEqual(event.detail.object.key, "example-key")
200-
XCTAssertEqual(event.detail.object.size, 5)
201-
XCTAssertEqual(event.detail.object.etag, "b1946ac92492d2347c6235b4d2611184")
202-
XCTAssertEqual(event.detail.object.versionId, "KKsjUC1.6gIjqtvhfg5AdMI0eCePIiT3")
203-
XCTAssertEqual(event.detail.requestId, "189F19CB7FB1B6A4")
204-
XCTAssertEqual(event.detail.requester, "s3.amazonaws.com")
205-
XCTAssertEqual(event.detail.restoreExpiryTime.description, "2021-11-13 00:00:00 +0000")
206-
XCTAssertEqual(event.detail.sourceStorageClass, .glacier)
207-
}
104+
105+
func testS3ObjectCreatedEventFromJSON() {
106+
let eventBody = CloudwatchTests.eventBody(
107+
type: CloudwatchDetails.S3.ObjectCreatedNotification.name,
108+
details:
109+
"{ \"version\": \"0\", \"bucket\": { \"name\": \"amzn-s3-demo-bucket1\" }, \"object\": { \"key\": \"example-key\", \"size\":5, \"etag\": \"b1946ac92492d2347c6235b4d2611184\", \"version-id\": \"IYV3p45BT0ac8hjHg1houSdS1a.Mro8e\", \"sequencer\": \"617f08299329d189\" }, \"request-id\": \"N4N7GDK58NMKJ12R\", \"requester\": \"123456789012\", \"source-ip-address\": \"1.2.3.4\", \"reason\": \"PutObject\" }"
110+
111+
)
112+
let data = eventBody.data(using: .utf8)!
113+
var maybeEvent: CloudWatchS3ObjectCreatedNotificationEvent?
114+
XCTAssertNoThrow(
115+
maybeEvent = try JSONDecoder().decode(CloudWatchS3ObjectCreatedNotificationEvent.self, from: data)
116+
)
117+
118+
guard let event = maybeEvent else {
119+
return XCTFail("Expected to have an event")
120+
}
121+
122+
XCTAssertEqual(event.id, "cdc73f9d-aea9-11e3-9d5a-835b769c0d9c")
123+
XCTAssertEqual(event.source, "aws.events")
124+
XCTAssertEqual(event.accountId, "123456789012")
125+
XCTAssertEqual(event.time, Date(timeIntervalSince1970: 0))
126+
XCTAssertEqual(event.region, .us_east_1)
127+
XCTAssertEqual(event.resources, ["arn:aws:events:us-east-1:123456789012:rule/ExampleRule"])
128+
XCTAssertEqual(event.detail.version, "0")
129+
XCTAssertEqual(event.detail.bucket.name, "amzn-s3-demo-bucket1")
130+
XCTAssertEqual(event.detail.object.key, "example-key")
131+
XCTAssertEqual(event.detail.object.size, 5)
132+
XCTAssertEqual(event.detail.object.etag, "b1946ac92492d2347c6235b4d2611184")
133+
XCTAssertEqual(event.detail.object.versionId, "IYV3p45BT0ac8hjHg1houSdS1a.Mro8e")
134+
XCTAssertEqual(event.detail.object.sequencer, "617f08299329d189")
135+
XCTAssertEqual(event.detail.requestId, "N4N7GDK58NMKJ12R")
136+
XCTAssertEqual(event.detail.requester, "123456789012")
137+
XCTAssertEqual(event.detail.sourceIpAddress, "1.2.3.4")
138+
XCTAssertEqual(event.detail.reason, .putObject)
139+
}
140+
141+
func testS3ObjectDeletedEventFromJSON() {
142+
let eventBody = CloudwatchTests.eventBody(
143+
type: CloudwatchDetails.S3.ObjectDeletedNotification.name,
144+
details:
145+
"{ \"version\": \"0\", \"bucket\": { \"name\": \"amzn-s3-demo-bucket1\" }, \"object\": { \"key\": \"example-key\", \"etag\": \"d41d8cd98f00b204e9800998ecf8427e\", \"version-id\": \"1QW9g1Z99LUNbvaaYVpW9xDlOLU.qxgF\", \"sequencer\": \"617f0837b476e463\" }, \"request-id\": \"0BH729840619AG5K\", \"requester\": \"123456789012\", \"source-ip-address\": \"1.2.3.4\", \"reason\": \"DeleteObject\", \"deletion-type\": \"Delete Marker Created\" }"
146+
147+
)
148+
let data = eventBody.data(using: .utf8)!
149+
var maybeEvent: CloudWatchS3ObjectDeletedNotificationEvent?
150+
XCTAssertNoThrow(
151+
maybeEvent = try JSONDecoder().decode(CloudWatchS3ObjectDeletedNotificationEvent.self, from: data)
152+
)
153+
154+
guard let event = maybeEvent else {
155+
return XCTFail("Expected to have an event")
156+
}
157+
158+
XCTAssertEqual(event.id, "cdc73f9d-aea9-11e3-9d5a-835b769c0d9c")
159+
XCTAssertEqual(event.source, "aws.events")
160+
XCTAssertEqual(event.accountId, "123456789012")
161+
XCTAssertEqual(event.time, Date(timeIntervalSince1970: 0))
162+
XCTAssertEqual(event.region, .us_east_1)
163+
XCTAssertEqual(event.resources, ["arn:aws:events:us-east-1:123456789012:rule/ExampleRule"])
164+
XCTAssertEqual(event.detail.version, "0")
165+
XCTAssertEqual(event.detail.bucket.name, "amzn-s3-demo-bucket1")
166+
XCTAssertEqual(event.detail.object.key, "example-key")
167+
XCTAssertEqual(event.detail.object.etag, "d41d8cd98f00b204e9800998ecf8427e")
168+
XCTAssertEqual(event.detail.object.versionId, "1QW9g1Z99LUNbvaaYVpW9xDlOLU.qxgF")
169+
XCTAssertEqual(event.detail.object.sequencer, "617f0837b476e463")
170+
XCTAssertEqual(event.detail.requestId, "0BH729840619AG5K")
171+
XCTAssertEqual(event.detail.requester, "123456789012")
172+
XCTAssertEqual(event.detail.sourceIpAddress, "1.2.3.4")
173+
XCTAssertEqual(event.detail.reason, .deleteObject)
174+
XCTAssertEqual(event.detail.deletionType, .deleteMarkerCreated)
175+
}
176+
177+
func testS3ObjectRestoreCompletedEventFromJSON() {
178+
let eventBody = CloudwatchTests.eventBody(
179+
type: CloudwatchDetails.S3.ObjectRestoreCompletedNotification.name,
180+
details:
181+
"{ \"version\": \"0\", \"bucket\": { \"name\": \"amzn-s3-demo-bucket1\" }, \"object\": { \"key\": \"example-key\", \"size\": 5, \"etag\": \"b1946ac92492d2347c6235b4d2611184\", \"version-id\": \"KKsjUC1.6gIjqtvhfg5AdMI0eCePIiT3\" }, \"request-id\": \"189F19CB7FB1B6A4\", \"requester\": \"s3.amazonaws.com\", \"restore-expiry-time\": \"2021-11-13T00:00:00Z\", \"source-storage-class\": \"GLACIER\" }"
182+
183+
)
184+
let data = eventBody.data(using: .utf8)!
185+
var maybeEvent: CloudWatchS3ObjectRestoreCompletedNotificationEvent?
186+
XCTAssertNoThrow(
187+
maybeEvent = try JSONDecoder().decode(CloudWatchS3ObjectRestoreCompletedNotificationEvent.self, from: data)
188+
)
189+
190+
guard let event = maybeEvent else {
191+
return XCTFail("Expected to have an event")
192+
}
193+
194+
XCTAssertEqual(event.id, "cdc73f9d-aea9-11e3-9d5a-835b769c0d9c")
195+
XCTAssertEqual(event.source, "aws.events")
196+
XCTAssertEqual(event.accountId, "123456789012")
197+
XCTAssertEqual(event.time, Date(timeIntervalSince1970: 0))
198+
XCTAssertEqual(event.region, .us_east_1)
199+
XCTAssertEqual(event.resources, ["arn:aws:events:us-east-1:123456789012:rule/ExampleRule"])
200+
XCTAssertEqual(event.detail.version, "0")
201+
XCTAssertEqual(event.detail.bucket.name, "amzn-s3-demo-bucket1")
202+
XCTAssertEqual(event.detail.object.key, "example-key")
203+
XCTAssertEqual(event.detail.object.size, 5)
204+
XCTAssertEqual(event.detail.object.etag, "b1946ac92492d2347c6235b4d2611184")
205+
XCTAssertEqual(event.detail.object.versionId, "KKsjUC1.6gIjqtvhfg5AdMI0eCePIiT3")
206+
XCTAssertEqual(event.detail.requestId, "189F19CB7FB1B6A4")
207+
XCTAssertEqual(event.detail.requester, "s3.amazonaws.com")
208+
XCTAssertEqual(event.detail.restoreExpiryTime.description, "2021-11-13 00:00:00 +0000")
209+
XCTAssertEqual(event.detail.sourceStorageClass, .glacier)
210+
}
208211

209212
func testCustomEventFromJSON() {
210213
struct Custom: CloudwatchDetail {

0 commit comments

Comments
 (0)