StorageAPITests.swift 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  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
  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 in
  50. }
  51. _ = ref.putData(Data(), metadata: metadata) { metadata, 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 in
  57. }
  58. _ = ref.putFile(from: file, metadata: metadata) { metadata, error in
  59. }
  60. _ = ref.getData(maxSize: 122) { data, error in
  61. }
  62. _ = ref.getData(maxSize: 122) { result in
  63. }
  64. ref.downloadURL { url, error in
  65. }
  66. ref.downloadURL { result in
  67. }
  68. ref.write(toFile: file)
  69. ref.write(toFile: file) { url, error in
  70. }
  71. ref.write(toFile: file) { result in
  72. }
  73. ref.listAll { listResult, error in
  74. }
  75. ref.listAll { result in
  76. }
  77. ref.list(maxResults: 123) { listResult, error in
  78. }
  79. ref.list(maxResults: 222) { result in
  80. }
  81. ref.list(maxResults: 123, pageToken: "pageToken") { listResult, error in
  82. }
  83. ref.list(maxResults: 222, pageToken: "pageToken") { result in
  84. }
  85. ref.getMetadata { result in
  86. }
  87. ref.getMetadata { metadata, error in
  88. }
  89. ref.delete { error in
  90. }
  91. }
  92. #if Firebase9Breaking
  93. func StorageConstantsTypedefs() {
  94. var _: StorageHandle
  95. var _: StorageVoidDataError
  96. var _: StorageVoidError
  97. var _: StorageVoidMetadata
  98. var _: StorageVoidMetadataError
  99. var _: StorageVoidSnapshot
  100. var _: StorageVoidURLError
  101. }
  102. #endif
  103. func testStorageConstantsGlobal() {
  104. XCTAssertEqual(StorageErrorDomain, "FIRStorageErrorDomain")
  105. }
  106. func StorageListResultApis(result: StorageListResult) {
  107. _ = result.prefixes
  108. _ = result.items
  109. _ = result.pageToken
  110. }
  111. func taskStatuses(status: StorageTaskStatus) -> StorageTaskStatus {
  112. switch status {
  113. case .unknown: return status
  114. case .resume: return status
  115. case .progress: return status
  116. case .pause: return status
  117. case .success: return status
  118. case .failure: return status
  119. @unknown default:
  120. fatalError()
  121. }
  122. }
  123. func errorCodes(code: StorageErrorCode) -> StorageErrorCode {
  124. switch code {
  125. case .unknown: return code
  126. case .objectNotFound: return code
  127. case .bucketNotFound: return code
  128. case .projectNotFound: return code
  129. case .quotaExceeded: return code
  130. case .unauthenticated: return code
  131. case .unauthorized: return code
  132. case .retryLimitExceeded: return code
  133. case .nonMatchingChecksum: return code
  134. case .downloadSizeExceeded: return code
  135. case .cancelled: return code
  136. case .invalidArgument: return code
  137. @unknown default:
  138. fatalError()
  139. }
  140. }
  141. func storageMetadataApis() {
  142. let metadata = StorageMetadata()
  143. _ = metadata.bucket
  144. metadata.cacheControl = metadata.cacheControl
  145. metadata.contentDisposition = metadata.contentDisposition
  146. metadata.contentEncoding = metadata.contentEncoding
  147. metadata.contentLanguage = metadata.contentLanguage
  148. metadata.contentType = metadata.contentType
  149. _ = metadata.md5Hash
  150. _ = metadata.generation
  151. metadata.customMetadata = metadata.customMetadata
  152. _ = metadata.metageneration
  153. _ = metadata.name
  154. _ = metadata.path
  155. _ = metadata.size
  156. _ = metadata.timeCreated
  157. _ = metadata.updated
  158. _ = metadata.storageReference
  159. _ = metadata.dictionaryRepresentation()
  160. _ = metadata.isFile
  161. _ = metadata.isFolder
  162. }
  163. func StorageObservableTaskApis(ref: StorageReference) throws {
  164. let task = ref.write(toFile: URL(string: "url")!)
  165. _ = task.observe(.pause) { snaphot in
  166. }
  167. task.removeObserver(withHandle: "handle")
  168. task.removeAllObservers()
  169. task.removeAllObservers(for: .progress)
  170. }
  171. func StorageTaskApis(task: StorageTask) {
  172. _ = task.snapshot
  173. }
  174. func StorageTaskManagementApis(task: StorageTaskManagement) {
  175. task.enqueue()
  176. task.pause?()
  177. task.cancel?()
  178. task.resume?()
  179. }
  180. func StorageTaskSnapshotApis(snapshot: StorageTaskSnapshot) {
  181. _ = snapshot.task
  182. _ = snapshot.metadata
  183. _ = snapshot.reference
  184. _ = snapshot.progress
  185. _ = snapshot.error
  186. _ = snapshot.status
  187. }
  188. }