From bf472feda3960c104a54031358f60cec983aafd7 Mon Sep 17 00:00:00 2001 From: Quan Vo Date: Tue, 30 May 2017 14:12:39 -0500 Subject: [PATCH 1/2] Rename some API params for consistency/clarity --- Package.swift | 2 +- Sources/Login.swift | 14 +++++++------- Sources/SMTP.swift | 8 ++++---- Tests/SwiftSMTPTests/Constant.swift | 10 +++++----- Tests/SwiftSMTPTests/TestDataSender.swift | 6 +++--- Tests/SwiftSMTPTests/TestLogin.swift | 10 +++++----- Tests/SwiftSMTPTests/TestSender.swift | 14 +++++++------- 7 files changed, 32 insertions(+), 32 deletions(-) diff --git a/Package.swift b/Package.swift index 072d9ef..565519e 100644 --- a/Package.swift +++ b/Package.swift @@ -1,7 +1,7 @@ import PackageDescription #if os(Linux) && !swift(>=3.1.1) -print("Please use Swift >=3.1.1.") +fatalError("Please use Swift >=3.1.1.") #else let package = Package( name: "SwiftSMTP", diff --git a/Sources/Login.swift b/Sources/Login.swift index 29c7177..556ab4f 100644 --- a/Sources/Login.swift +++ b/Sources/Login.swift @@ -24,7 +24,7 @@ typealias LoginCallback = ((SMTPSocket?, Error?) -> Void)? class Login { fileprivate let hostname: String - fileprivate let user: String + fileprivate let email: String fileprivate let password: String fileprivate let port: Port fileprivate let ssl: SSL? @@ -35,9 +35,9 @@ class Login { fileprivate var callback: LoginCallback fileprivate var socket: SMTPSocket - init(hostname: String, user: String, password: String, port: Port, ssl: SSL?, authMethods: [AuthMethod], domainName: String, accessToken: String?, timeout: Int, callback: LoginCallback) throws { + init(hostname: String, email: String, password: String, port: Port, ssl: SSL?, authMethods: [AuthMethod], domainName: String, accessToken: String?, timeout: Int, callback: LoginCallback) throws { self.hostname = hostname - self.user = user + self.email = email self.password = password self.port = port self.ssl = ssl @@ -142,25 +142,25 @@ private extension Login { private extension Login { func loginCramMD5() throws { let challenge = try auth(authMethod: .cramMD5, credentials: nil).message - try authPassword(try AuthEncoder.cramMD5(challenge: challenge, user: user, password: password)) + try authPassword(try AuthEncoder.cramMD5(challenge: challenge, user: email, password: password)) } func loginLogin() throws { _ = try auth(authMethod: .login, credentials: nil) - let credentials = AuthEncoder.login(user: user, password: password) + let credentials = AuthEncoder.login(user: email, password: password) try authUser(credentials.encodedUser) try authPassword(credentials.encodedPassword) } func loginPlain() throws { - _ = try auth(authMethod: .plain, credentials: AuthEncoder.plain(user: user, password: password)) + _ = try auth(authMethod: .plain, credentials: AuthEncoder.plain(user: email, password: password)) } func loginXOAuth2() throws { guard let accessToken = accessToken else { throw SMTPError(.noAccessToken) } - _ = try auth(authMethod: .xoauth2, credentials: AuthEncoder.xoauth2(user: user, accessToken: accessToken)) + _ = try auth(authMethod: .xoauth2, credentials: AuthEncoder.xoauth2(user: email, accessToken: accessToken)) } } diff --git a/Sources/SMTP.swift b/Sources/SMTP.swift index e83ba42..9b8ec4c 100644 --- a/Sources/SMTP.swift +++ b/Sources/SMTP.swift @@ -44,7 +44,7 @@ public enum AuthMethod: String { /// Represents a handle to connect to and send emails to an SMTP server. public struct SMTP { private let hostname: String - private let user: String + private let email: String private let password: String private let port: Port private let ssl: SSL? @@ -76,10 +76,10 @@ public struct SMTP { /// Some servers like Gmail support IPv6, and if your network does not, /// you will first attempt to connect via IPv6, then timeout, and fall /// back to IPv4. You can avoid this by disabling IPv6 on your machine. - public init(hostname: String, user: String, password: String, port: Port = Ports.tls.rawValue, ssl: SSL? = nil, authMethods: [AuthMethod] = AuthMethod.defaultAuthMethods, + public init(hostname: String, email: String, password: String, port: Port = Ports.tls.rawValue, ssl: SSL? = nil, authMethods: [AuthMethod] = AuthMethod.defaultAuthMethods, domainName: String = "localhost", accessToken: String? = nil, timeout: Int = 10) { self.hostname = hostname - self.user = user + self.email = email self.password = password self.port = port self.ssl = ssl @@ -139,7 +139,7 @@ public struct SMTP { public func send(_ mails: [Mail], progress: Progress = nil, completion: Completion = nil) { do { try Login(hostname: hostname, - user: user, + email: email, password: password, port: port, ssl: ssl, diff --git a/Tests/SwiftSMTPTests/Constant.swift b/Tests/SwiftSMTPTests/Constant.swift index 1a29b6e..0a0cb0a 100644 --- a/Tests/SwiftSMTPTests/Constant.swift +++ b/Tests/SwiftSMTPTests/Constant.swift @@ -25,8 +25,8 @@ import SwiftSMTP let testDuration: Double = 20 let hostname = "smtp.gmail.com" -let user = "kiturasmtp" + Int.randomEmailNum(4) + "@gmail.com" -let user2 = "kiturasmtp@gmail.com" +let email = "kiturasmtp" + Int.randomEmailNum(4) + "@gmail.com" +let email2 = "kiturasmtp@gmail.com" let password = "ibm12345" let port = Ports.tls.rawValue let secure = true @@ -51,9 +51,9 @@ let root = #file let ssl = SSL(withChainFilePath: cert, withPassword: certPassword) #endif -let smtp = SMTP(hostname: hostname, user: user, password: password, ssl: ssl) -let from = User(name: "Dr. Light", email: user) -let to = User(name: "Megaman", email: user2) +let smtp = SMTP(hostname: hostname, email: email, password: password, ssl: ssl) +let from = User(name: "Dr. Light", email: email) +let to = User(name: "Megaman", email: email2) let to2 = User(name: "Roll", email: "kiturasmtp2@gmail.com") let text = "Humans and robots living together in harmony and equality. That was my ultimate wish." let html = "" diff --git a/Tests/SwiftSMTPTests/TestDataSender.swift b/Tests/SwiftSMTPTests/TestDataSender.swift index 414c698..bd4af7b 100644 --- a/Tests/SwiftSMTPTests/TestDataSender.swift +++ b/Tests/SwiftSMTPTests/TestDataSender.swift @@ -51,7 +51,7 @@ class TestDataSender: XCTestCase { var sender: Sender? try Login(hostname: hostname, - user: user, + email: email, password: password, port: port, ssl: ssl, @@ -104,7 +104,7 @@ class TestDataSender: XCTestCase { var sender: Sender? try Login(hostname: hostname, - user: user, + email: email, password: password, port: port, ssl: ssl, @@ -157,7 +157,7 @@ class TestDataSender: XCTestCase { var sender: Sender? try Login(hostname: hostname, - user: user, + email: email, password: password, port: port, ssl: ssl, diff --git a/Tests/SwiftSMTPTests/TestLogin.swift b/Tests/SwiftSMTPTests/TestLogin.swift index 542def1..85756a5 100644 --- a/Tests/SwiftSMTPTests/TestLogin.swift +++ b/Tests/SwiftSMTPTests/TestLogin.swift @@ -28,7 +28,7 @@ class TestLogin: XCTestCase { func testBadCredentials() throws { let x = expectation(description: "Fail login with bad credentials.") - try Login(hostname: hostname, user: user, password: "", port: port, ssl: ssl, authMethods: authMethods, domainName: domainName, accessToken: nil, timeout: timeout) { (_, err) in + try Login(hostname: hostname, email: email, password: "", port: port, ssl: ssl, authMethods: authMethods, domainName: domainName, accessToken: nil, timeout: timeout) { (_, err) in if let err = err as? SMTPError, case .badResponse = err { x.fulfill() } else { @@ -40,7 +40,7 @@ class TestLogin: XCTestCase { func testBadPort() throws { let x = expectation(description: "Login timeout because bad port.") - try Login(hostname: hostname, user: user, password: password, port: 1, ssl: ssl, authMethods: authMethods, domainName: domainName, accessToken: nil, timeout: timeout) { (_, err) in + try Login(hostname: hostname, email: email, password: password, port: 1, ssl: ssl, authMethods: authMethods, domainName: domainName, accessToken: nil, timeout: timeout) { (_, err) in if let err = err as? SMTPError, case .couldNotConnectToServer(_, _) = err { x.fulfill() } else { @@ -52,7 +52,7 @@ class TestLogin: XCTestCase { func testLogin() throws { let x = expectation(description: "Login with Login auth.") - try Login(hostname: hostname, user: user, password: password, port: port, ssl: ssl, authMethods: [.login], domainName: domainName, accessToken: nil, timeout: timeout) { (_, err) in + try Login(hostname: hostname, email: email, password: password, port: port, ssl: ssl, authMethods: [.login], domainName: domainName, accessToken: nil, timeout: timeout) { (_, err) in XCTAssertNil(err, String(describing: err)) x.fulfill() }.login() @@ -61,7 +61,7 @@ class TestLogin: XCTestCase { func testPlain() throws { let x = expectation(description: "Login with Plain auth.") - try Login(hostname: hostname, user: user, password: password, port: port, ssl: ssl, authMethods: [.plain], domainName: domainName, accessToken: nil, timeout: timeout) { (_, err) in + try Login(hostname: hostname, email: email, password: password, port: port, ssl: ssl, authMethods: [.plain], domainName: domainName, accessToken: nil, timeout: timeout) { (_, err) in XCTAssertNil(err, String(describing: err)) x.fulfill() }.login() @@ -70,7 +70,7 @@ class TestLogin: XCTestCase { func testPort0() throws { let x = expectation(description: "Fail login because port can't be 0.") - try Login(hostname: hostname, user: user, password: password, port: 0, ssl: ssl, authMethods: authMethods, domainName: domainName, accessToken: nil, timeout: timeout) { (_, err) in + try Login(hostname: hostname, email: email, password: password, port: 0, ssl: ssl, authMethods: authMethods, domainName: domainName, accessToken: nil, timeout: timeout) { (_, err) in XCTAssertNotNil(err, "Should get error here, but error was nil.") x.fulfill() }.login() diff --git a/Tests/SwiftSMTPTests/TestSender.swift b/Tests/SwiftSMTPTests/TestSender.swift index 60dbf97..e4f4825 100644 --- a/Tests/SwiftSMTPTests/TestSender.swift +++ b/Tests/SwiftSMTPTests/TestSender.swift @@ -36,8 +36,8 @@ class TestSender: XCTestCase { func testBadEmail() { let x = expectation(description: "Send a mail that will fail because of an invalid receiving address.") - let user = User(email: "") - let mail = Mail(from: user, to: [user]) + let email = User(email: "") + let mail = Mail(from: email, to: [email]) smtp.send(mail) { (err) in XCTAssertNotNil(err, "Sending mail to an invalid email address should return an error, but return nil.") x.fulfill() @@ -46,14 +46,14 @@ class TestSender: XCTestCase { } func testIsValidEmail() throws { - XCTAssert(try user.isValidEmail(), "\(user) should be a valid email.") + XCTAssert(try email.isValidEmail(), "\(email) should be a valid email.") XCTAssertFalse(try "".isValidEmail(), "Blank email should be in invalid email.") XCTAssertFalse(try "a".isValidEmail(), "`a` should be in invalid email.") XCTAssertFalse(try "@gmail.com".isValidEmail(), "`@gmail.com` should be in invalid email.") - XCTAssertFalse(try "user@.com".isValidEmail(), "`user@.com` should be in invalid email.") - XCTAssertFalse(try "user@user".isValidEmail(), "`user@user` should be in invalid email.") - XCTAssertFalse(try "user@user.a".isValidEmail(), "`user@user.a` should be in invalid email.") - XCTAssertFalse(try "user@user.".isValidEmail(), "`user@user.` should be in invalid email.") + XCTAssertFalse(try "email@.com".isValidEmail(), "`email@.com` should be in invalid email.") + XCTAssertFalse(try "email@email".isValidEmail(), "`email@email` should be in invalid email.") + XCTAssertFalse(try "email@email.a".isValidEmail(), "`email@email.a` should be in invalid email.") + XCTAssertFalse(try "email@email.".isValidEmail(), "`email@email.` should be in invalid email.") } func testSendMail() { From 397de9d668eac1a2d674a00bcdae6ed79d95e445 Mon Sep 17 00:00:00 2001 From: Quan Vo Date: Tue, 30 May 2017 14:17:02 -0500 Subject: [PATCH 2/2] Fix name in test --- Tests/SwiftSMTPTests/TestSender.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/SwiftSMTPTests/TestSender.swift b/Tests/SwiftSMTPTests/TestSender.swift index e4f4825..9afc8ad 100644 --- a/Tests/SwiftSMTPTests/TestSender.swift +++ b/Tests/SwiftSMTPTests/TestSender.swift @@ -36,8 +36,8 @@ class TestSender: XCTestCase { func testBadEmail() { let x = expectation(description: "Send a mail that will fail because of an invalid receiving address.") - let email = User(email: "") - let mail = Mail(from: email, to: [email]) + let user = User(email: "") + let mail = Mail(from: user, to: [user]) smtp.send(mail) { (err) in XCTAssertNotNil(err, "Sending mail to an invalid email address should return an error, but return nil.") x.fulfill()