StorageAPITests.swift 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. // Copyright 2022 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. // MARK: This file is used to evaluate the experience of using Firebase APIs in Swift.
  15. import Foundation
  16. import XCTest
  17. import FirebaseCore
  18. import FirebaseStorage
  19. @available(iOS 13, tvOS 13, macOS 10.15, macCatalyst 13, watchOS 7, *)
  20. final class StorageAPITests: XCTestCase {
  21. func StorageAPIs() {
  22. let app = FirebaseApp.app()
  23. _ = Storage.storage()
  24. _ = Storage.storage(app: app!)
  25. _ = Storage.storage(url: "my-url")
  26. let storage = Storage.storage(app: app!, url: "my-url")
  27. _ = storage.app
  28. storage.maxUploadRetryTime = storage.maxUploadRetryTime + 1
  29. storage.maxDownloadRetryTime = storage.maxDownloadRetryTime + 1
  30. storage.maxOperationRetryTime = storage.maxOperationRetryTime + 1
  31. let queue: DispatchQueue = storage.callbackQueue
  32. storage.callbackQueue = queue
  33. _ = storage.reference()
  34. _ = storage.reference(forURL: "my-url")
  35. _ = storage.reference(withPath: "path")
  36. storage.useEmulator(withHost: "host", port: 123)
  37. }
  38. func StorageReferenceApis() {
  39. var ref = Storage.storage().reference()
  40. _ = ref.storage
  41. _ = ref.bucket
  42. _ = ref.fullPath
  43. _ = ref.name
  44. ref = ref.root()
  45. ref = ref.parent()!
  46. ref = ref.child("path")
  47. let metadata = StorageMetadata()
  48. _ = ref.putData(Data())
  49. _ = ref.putData(Data(), metadata: metadata)
  50. _ = ref.putData(Data(), metadata: metadata) { (result: Result<StorageMetadata, Error>) in
  51. }
  52. _ = ref.putData(Data(), metadata: metadata) { (result: StorageMetadata?, error: Error?) in
  53. }
  54. let file = URL(string: "my-url")!
  55. _ = ref.putFile(from: file)
  56. _ = ref.putFile(from: file, metadata: metadata)
  57. _ = ref.putFile(from: file, metadata: metadata) { (result: Result<StorageMetadata, Error>) in
  58. }
  59. _ = ref.putFile(from: file, metadata: metadata) { (result: StorageMetadata?, error: Error?) in
  60. }
  61. _ = ref.getData(maxSize: 122) { (result: Data?, error: Error?) in
  62. }
  63. _ = ref.getData(maxSize: 122) { (result: Result<Data, Error>) in
  64. }
  65. ref.downloadURL { (result: URL?, error: Error?) in
  66. }
  67. ref.downloadURL { (result: Result<URL, Error>) in
  68. }
  69. ref.write(toFile: file)
  70. ref.write(toFile: file) { (result: URL?, error: Error?) in
  71. }
  72. ref.write(toFile: file) { (result: Result<URL, Error>) in
  73. }
  74. ref.listAll { (listResult: StorageListResult?, error: Error?) in
  75. }
  76. ref.listAll { (result: Result<StorageListResult, Error>) in
  77. }
  78. ref.list(maxResults: 123) { (listResult: StorageListResult?, error: Error?) in
  79. }
  80. ref.list(maxResults: 222) { (result: Result<StorageListResult, Error>) in
  81. }
  82. ref
  83. .list(maxResults: 123,
  84. pageToken: "pageToken") { (listResult: StorageListResult?, error: Error?) in
  85. }
  86. ref
  87. .list(maxResults: 222, pageToken: "pageToken") { (result: Result<StorageListResult, Error>) in
  88. }
  89. ref.getMetadata { (result: Result<StorageMetadata, Error>) in
  90. }
  91. ref.getMetadata { (result: StorageMetadata?, error: Error?) in
  92. }
  93. ref.delete { (error: Error?) in
  94. }
  95. }
  96. #if Firebase9Breaking
  97. func StorageConstantsTypedefs() {
  98. var _: StorageHandle
  99. var _: StorageVoidDataError
  100. var _: StorageVoidError
  101. var _: StorageVoidMetadata
  102. var _: StorageVoidMetadataError
  103. var _: StorageVoidSnapshot
  104. var _: StorageVoidURLError
  105. }
  106. #endif
  107. func testStorageConstantsGlobal() {
  108. XCTAssertEqual(StorageErrorDomain, "FIRStorageErrorDomain")
  109. }
  110. func StorageListResultApis(result: StorageListResult) {
  111. _ = result.prefixes
  112. _ = result.items
  113. _ = result.pageToken
  114. }
  115. func taskStatuses(status: StorageTaskStatus) -> StorageTaskStatus {
  116. switch status {
  117. case .unknown: return status
  118. case .resume: return status
  119. case .progress: return status
  120. case .pause: return status
  121. case .success: return status
  122. case .failure: return status
  123. @unknown default:
  124. fatalError()
  125. }
  126. }
  127. func errorCodes(code: StorageErrorCode) -> StorageErrorCode {
  128. switch code {
  129. case .unknown: return code
  130. case .objectNotFound: return code
  131. case .bucketNotFound: return code
  132. case .projectNotFound: return code
  133. case .quotaExceeded: return code
  134. case .unauthenticated: return code
  135. case .unauthorized: return code
  136. case .retryLimitExceeded: return code
  137. case .nonMatchingChecksum: return code
  138. case .downloadSizeExceeded: return code
  139. case .cancelled: return code
  140. case .invalidArgument: return code
  141. case .bucketMismatch: return code
  142. case .internalError: return code
  143. case .pathError: return code
  144. @unknown default:
  145. fatalError()
  146. }
  147. }
  148. func storageMetadataApis() {
  149. let metadata = StorageMetadata()
  150. _ = metadata.bucket
  151. _ = metadata.cacheControl
  152. _ = metadata.contentDisposition
  153. _ = metadata.contentEncoding
  154. _ = metadata.contentLanguage
  155. _ = metadata.contentType
  156. _ = metadata.md5Hash
  157. _ = metadata.generation
  158. _ = metadata.customMetadata
  159. _ = metadata.metageneration
  160. _ = metadata.name
  161. _ = metadata.path
  162. _ = metadata.size
  163. _ = metadata.timeCreated
  164. _ = metadata.updated
  165. _ = metadata.dictionaryRepresentation()
  166. _ = metadata.isFile
  167. _ = metadata.isFolder
  168. }
  169. func StorageObservableTaskApis(ref: StorageReference) throws {
  170. let task = ref.write(toFile: URL(string: "url")!)
  171. _ = task.observe(.pause) { snapshot in
  172. }
  173. task.removeObserver(withHandle: "handle")
  174. task.removeAllObservers()
  175. task.removeAllObservers(for: .progress)
  176. }
  177. func StorageTaskApis(task: StorageTask) {
  178. _ = task.snapshot
  179. }
  180. func StorageTaskManagementApis(task: StorageTaskManagement) {
  181. task.enqueue()
  182. task.pause?()
  183. task.cancel?()
  184. task.resume?()
  185. }
  186. func StorageTaskSnapshotApis(snapshot: StorageTaskSnapshot) {
  187. _ = snapshot.task
  188. _ = snapshot.metadata
  189. _ = snapshot.reference
  190. _ = snapshot.progress
  191. _ = snapshot.error
  192. _ = snapshot.status
  193. }
  194. }