StorageAPITests.swift 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  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. final class StorageAPITests: XCTestCase {
  20. func StorageAPIs() {
  21. let app = FirebaseApp.app()
  22. _ = Storage.storage()
  23. _ = Storage.storage(app: app!)
  24. _ = Storage.storage(url: "my-url")
  25. let storage = Storage.storage(app: app!, url: "my-url")
  26. _ = storage.app
  27. storage.maxUploadRetryTime = storage.maxUploadRetryTime + 1
  28. storage.maxDownloadRetryTime = storage.maxDownloadRetryTime + 1
  29. storage.maxOperationRetryTime = storage.maxOperationRetryTime + 1
  30. let queue: DispatchQueue = storage.callbackQueue
  31. storage.callbackQueue = queue
  32. _ = storage.reference()
  33. _ = storage.reference(forURL: "my-url")
  34. _ = storage.reference(withPath: "path")
  35. storage.useEmulator(withHost: "host", port: 123)
  36. }
  37. func StorageReferenceApis() {
  38. var ref = Storage.storage().reference()
  39. _ = ref.storage
  40. _ = ref.bucket
  41. _ = ref.fullPath
  42. _ = ref.name
  43. ref = ref.root()
  44. ref = ref.parent()!
  45. ref = ref.child("path")
  46. let metadata = StorageMetadata()
  47. _ = ref.putData(Data())
  48. _ = ref.putData(Data(), metadata: metadata)
  49. _ = ref.putData(Data(), metadata: metadata) { (result: Result<StorageMetadata, Error>) in
  50. }
  51. _ = ref.putData(Data(), metadata: metadata) { (result: StorageMetadata?, error: Error?) in
  52. }
  53. let file = URL(string: "my-url")!
  54. _ = ref.putFile(from: file)
  55. _ = ref.putFile(from: file, metadata: metadata)
  56. _ = ref.putFile(from: file, metadata: metadata) { (result: Result<StorageMetadata, Error>) in
  57. }
  58. _ = ref.putFile(from: file, metadata: metadata) { (result: StorageMetadata?, error: Error?) in
  59. }
  60. _ = ref.getData(maxSize: 122) { (result: Data?, error: Error?) in
  61. }
  62. _ = ref.getData(maxSize: 122) { (result: Result<Data, Error>) in
  63. }
  64. ref.downloadURL { (result: URL?, error: Error?) in
  65. }
  66. ref.downloadURL { (result: Result<URL, Error>) in
  67. }
  68. ref.write(toFile: file)
  69. ref.write(toFile: file) { (result: URL?, error: Error?) in
  70. }
  71. ref.write(toFile: file) { (result: Result<URL, Error>) in
  72. }
  73. ref.listAll { (listResult: StorageListResult?, error: Error?) in
  74. }
  75. ref.listAll { (result: Result<StorageListResult, Error>) in
  76. }
  77. ref.list(maxResults: 123) { (listResult: StorageListResult?, error: Error?) in
  78. }
  79. ref.list(maxResults: 222) { (result: Result<StorageListResult, Error>) in
  80. }
  81. ref
  82. .list(maxResults: 123,
  83. pageToken: "pageToken") { (listResult: StorageListResult?, error: Error?) in
  84. }
  85. ref
  86. .list(maxResults: 222, pageToken: "pageToken") { (result: Result<StorageListResult, Error>) in
  87. }
  88. ref.getMetadata { (result: Result<StorageMetadata, Error>) in
  89. }
  90. ref.getMetadata { (result: StorageMetadata?, error: Error?) in
  91. }
  92. ref.delete { (error: Error?) in
  93. }
  94. }
  95. #if Firebase9Breaking
  96. func StorageConstantsTypedefs() {
  97. var _: StorageHandle
  98. var _: StorageVoidDataError
  99. var _: StorageVoidError
  100. var _: StorageVoidMetadata
  101. var _: StorageVoidMetadataError
  102. var _: StorageVoidSnapshot
  103. var _: StorageVoidURLError
  104. }
  105. #endif
  106. func testStorageConstantsGlobal() {
  107. XCTAssertEqual(StorageErrorDomain, "FIRStorageErrorDomain")
  108. }
  109. func StorageListResultApis(result: StorageListResult) {
  110. _ = result.prefixes
  111. _ = result.items
  112. _ = result.pageToken
  113. }
  114. func taskStatuses(status: StorageTaskStatus) -> StorageTaskStatus {
  115. switch status {
  116. case .unknown: return status
  117. case .resume: return status
  118. case .progress: return status
  119. case .pause: return status
  120. case .success: return status
  121. case .failure: return status
  122. @unknown default:
  123. fatalError()
  124. }
  125. }
  126. func errorCodes(code: StorageErrorCode) -> StorageErrorCode {
  127. switch code {
  128. case .unknown: return code
  129. case .objectNotFound: return code
  130. case .bucketNotFound: return code
  131. case .projectNotFound: return code
  132. case .quotaExceeded: return code
  133. case .unauthenticated: return code
  134. case .unauthorized: return code
  135. case .retryLimitExceeded: return code
  136. case .nonMatchingChecksum: return code
  137. case .downloadSizeExceeded: return code
  138. case .cancelled: return code
  139. case .invalidArgument: return code
  140. @unknown default:
  141. fatalError()
  142. }
  143. }
  144. func storageMetadataApis() {
  145. let metadata = StorageMetadata()
  146. _ = metadata.bucket
  147. _ = metadata.cacheControl
  148. _ = metadata.contentDisposition
  149. _ = metadata.contentEncoding
  150. _ = metadata.contentLanguage
  151. _ = metadata.contentType
  152. _ = metadata.md5Hash
  153. _ = metadata.generation
  154. _ = metadata.customMetadata
  155. _ = metadata.metageneration
  156. _ = metadata.name
  157. _ = metadata.path
  158. _ = metadata.size
  159. _ = metadata.timeCreated
  160. _ = metadata.updated
  161. _ = metadata.dictionaryRepresentation()
  162. _ = metadata.isFile
  163. _ = metadata.isFolder
  164. }
  165. func StorageObservableTaskApis(ref: StorageReference) throws {
  166. let task = ref.write(toFile: URL(string: "url")!)
  167. _ = task.observe(.pause) { snaphot in
  168. }
  169. task.removeObserver(withHandle: "handle")
  170. task.removeAllObservers()
  171. task.removeAllObservers(for: .progress)
  172. }
  173. func StorageTaskApis(task: StorageTask) {
  174. _ = task.snapshot
  175. }
  176. func StorageTaskManagementApis(task: StorageTaskManagement) {
  177. task.enqueue()
  178. task.pause?()
  179. task.cancel?()
  180. task.resume?()
  181. }
  182. func StorageTaskSnapshotApis(snapshot: StorageTaskSnapshot) {
  183. _ = snapshot.task
  184. _ = snapshot.metadata
  185. _ = snapshot.reference
  186. _ = snapshot.progress
  187. _ = snapshot.error
  188. _ = snapshot.status
  189. }
  190. }