BasicEchoTestCase.swift 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. * Copyright 2018, gRPC Authors All rights reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. import Dispatch
  17. import Foundation
  18. @testable import SwiftGRPC
  19. import XCTest
  20. extension Echo_EchoRequest {
  21. init(text: String) {
  22. self.text = text
  23. }
  24. }
  25. extension Echo_EchoResponse {
  26. init(text: String) {
  27. self.text = text
  28. }
  29. }
  30. class BasicEchoTestCase: XCTestCase {
  31. enum Security {
  32. case none
  33. case ssl
  34. case tlsMutualAuth
  35. }
  36. func makeProvider() -> Echo_EchoProvider { return EchoProvider() }
  37. var provider: Echo_EchoProvider!
  38. var server: Echo_EchoServer!
  39. var client: Echo_EchoServiceClient!
  40. var defaultTimeout: TimeInterval { return 1.0 }
  41. var security: Security { return .none }
  42. var address: String { return "localhost:5050" }
  43. override func setUp() {
  44. super.setUp()
  45. provider = makeProvider()
  46. let certificateString = String(data: certificateForTests, encoding: .utf8)!
  47. let keyString = String(data: keyForTests, encoding: .utf8)!
  48. let rootCerts = String(data: trustCollectionCertificateForTests, encoding: .utf8)!
  49. let clientCertificateString = String(data: clientCertificateForTests, encoding: .utf8)!
  50. let clientKeyString = String(data: clientKeyForTests, encoding: .utf8)!
  51. switch security {
  52. case .ssl:
  53. server = Echo_EchoServer(address: address,
  54. certificateString: certificateString,
  55. keyString: keyString,
  56. provider: provider)
  57. server.start()
  58. client = Echo_EchoServiceClient(address: address, certificates: rootCerts, arguments: [.sslTargetNameOverride("example.com")])
  59. client.host = "example.com"
  60. case .tlsMutualAuth:
  61. server = Echo_EchoServer(address: address, certificateString: certificateString, keyString: keyString, rootCerts: rootCerts, provider: provider)
  62. server.start()
  63. client = Echo_EchoServiceClient(address: address, certificates: rootCerts, clientCertificates: clientCertificateString, clientKey: clientKeyString, arguments: [.sslTargetNameOverride("example.com")])
  64. client.host = "example.com"
  65. case .none:
  66. server = Echo_EchoServer(address: address, provider: provider)
  67. server.start()
  68. client = Echo_EchoServiceClient(address: address, secure: false)
  69. }
  70. client.timeout = defaultTimeout
  71. }
  72. override func tearDown() {
  73. client = nil
  74. server.server.stop()
  75. server = nil
  76. super.tearDown()
  77. }
  78. }