Skip to content

Commit 4c26e48

Browse files
committed
Added Base64 tests
1 parent 792189b commit 4c26e48

File tree

5 files changed

+100
-7
lines changed

5 files changed

+100
-7
lines changed

Package.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,7 @@ let package = Package(
2424
.product(name: "NIOFoundationCompat", package: "swift-nio"),
2525
]),
2626
.testTarget(name: "AWSLambdaRuntimeTests", dependencies: ["AWSLambdaRuntime"]),
27-
.target(name: "AWSLambdaEvents", dependencies: [
28-
.product(name: "NIOHTTP1", package: "swift-nio"),
29-
.product(name: "NIOFoundationCompat", package: "swift-nio"),
30-
]),
27+
.target(name: "AWSLambdaEvents", dependencies: []),
3128
.testTarget(name: "AWSLambdaEventsTests", dependencies: ["AWSLambdaEvents"]),
3229
// samples
3330
.target(name: "StringSample", dependencies: ["AWSLambdaRuntime"]),

Sources/AWSLambdaEvents/Utils/Base64.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ extension Base64 {
158158
static let base64UrlAlphabet = DecodingOptions(rawValue: UInt(1 << 0))
159159
}
160160

161-
enum DecodingError: Error {
161+
enum DecodingError: Error, Equatable {
162162
case invalidLength
163163
case invalidCharacter(UInt8)
164164
case unexpectedPaddingCharacter

Tests/AWSLambdaEventsTests/SNSTests.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
//===----------------------------------------------------------------------===//
1414

1515
@testable import AWSLambdaEvents
16-
import NIO
1716
import XCTest
1817

1918
class SNSTests: XCTestCase {

Tests/AWSLambdaEventsTests/SQSTests.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
//===----------------------------------------------------------------------===//
1414

1515
@testable import AWSLambdaEvents
16-
import NIO
1716
import XCTest
1817

1918
class SQSTests: XCTestCase {
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
//===----------------------------------------------------------------------===//
2+
//
3+
// This source file is part of the SwiftAWSLambdaRuntime open source project
4+
//
5+
// Copyright (c) 2017-2020 Apple Inc. and the SwiftAWSLambdaRuntime project authors
6+
// Licensed under Apache License v2.0
7+
//
8+
// See LICENSE.txt for license information
9+
// See CONTRIBUTORS.txt for the list of SwiftAWSLambdaRuntime project authors
10+
//
11+
// SPDX-License-Identifier: Apache-2.0
12+
//
13+
//===----------------------------------------------------------------------===//
14+
15+
@testable import AWSLambdaEvents
16+
import XCTest
17+
18+
class Base64Tests: XCTestCase {
19+
// MARK: - Encoding -
20+
21+
func testEncodeEmptyData() throws {
22+
let data = [UInt8]()
23+
let encodedData = String(base64Encoding: data)
24+
XCTAssertEqual(encodedData.count, 0)
25+
}
26+
27+
func testBase64EncodingArrayOfNulls() throws {
28+
let data = Array(repeating: UInt8(0), count: 10)
29+
let encodedData = String(base64Encoding: data)
30+
XCTAssertEqual(encodedData, "AAAAAAAAAAAAAA==")
31+
}
32+
33+
func testBase64EncodingAllTheBytesSequentially() throws {
34+
let data = Array(UInt8(0) ... UInt8(255))
35+
let encodedData = String(base64Encoding: data)
36+
XCTAssertEqual(encodedData, "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==")
37+
}
38+
39+
func testBase64UrlEncodingAllTheBytesSequentially() throws {
40+
let data = Array(UInt8(0) ... UInt8(255))
41+
let encodedData = String(base64Encoding: data, options: .base64UrlAlphabet)
42+
XCTAssertEqual(encodedData, "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn-AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq-wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy8_T19vf4-fr7_P3-_w==")
43+
}
44+
45+
// MARK: - Decoding -
46+
47+
func testDecodeEmptyString() throws {
48+
var decoded: [UInt8]?
49+
XCTAssertNoThrow(decoded = try "".base64decoded())
50+
XCTAssertEqual(decoded?.count, 0)
51+
}
52+
53+
func testBase64DecodingArrayOfNulls() throws {
54+
let expected = Array(repeating: UInt8(0), count: 10)
55+
var decoded: [UInt8]?
56+
XCTAssertNoThrow(decoded = try "AAAAAAAAAAAAAA==".base64decoded())
57+
XCTAssertEqual(decoded, expected)
58+
}
59+
60+
func testBase64DecodingAllTheBytesSequentially() {
61+
let base64 = "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w=="
62+
63+
let expected = Array(UInt8(0) ... UInt8(255))
64+
var decoded: [UInt8]?
65+
XCTAssertNoThrow(decoded = try base64.base64decoded())
66+
67+
XCTAssertEqual(decoded, expected)
68+
}
69+
70+
func testBase64UrlDecodingAllTheBytesSequentially() {
71+
let base64 = "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn-AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq-wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy8_T19vf4-fr7_P3-_w=="
72+
73+
let expected = Array(UInt8(0) ... UInt8(255))
74+
var decoded: [UInt8]?
75+
XCTAssertNoThrow(decoded = try base64.base64decoded(options: .base64UrlAlphabet))
76+
77+
XCTAssertEqual(decoded, expected)
78+
}
79+
80+
func testBase64DecodingWithPoop() {
81+
XCTAssertThrowsError(_ = try "💩".base64decoded()) { error in
82+
XCTAssertEqual(error as? Base64.DecodingError, .invalidCharacter(240))
83+
}
84+
}
85+
86+
func testBase64DecodingWithInvalidLength() {
87+
XCTAssertThrowsError(_ = try "AAAAA".base64decoded()) { error in
88+
XCTAssertEqual(error as? Base64.DecodingError, .invalidLength)
89+
}
90+
}
91+
92+
func testNSStringToDecode() {
93+
let test = "1234567"
94+
let nsstring = test.data(using: .utf8)!.base64EncodedString()
95+
96+
XCTAssertNoThrow(try nsstring.base64decoded())
97+
}
98+
}

0 commit comments

Comments
 (0)