@@ -110,6 +110,71 @@ final class PackageCollectionsTests: XCTestCase {
110
110
}
111
111
}
112
112
113
+ func testInvalidCollectionNotAdded( ) throws {
114
+ let configuration = PackageCollections . Configuration ( )
115
+ let storage = makeMockStorage ( )
116
+ defer { XCTAssertNoThrow ( try storage. close ( ) ) }
117
+
118
+ let mockCollection = makeMockCollections ( count: 1 ) . first!
119
+
120
+ let collectionProviders = [ PackageCollectionsModel . CollectionSourceType. json: MockCollectionsProvider ( [ ] ) ]
121
+ let metadataProvider = MockMetadataProvider ( [ : ] )
122
+ let packageCollections = PackageCollections ( configuration: configuration, storage: storage, collectionProviders: collectionProviders, metadataProvider: metadataProvider)
123
+
124
+ do {
125
+ let list = try tsc_await { callback in packageCollections. listCollections ( callback: callback) }
126
+ XCTAssertEqual ( list. count, 0 , " list should be empty " )
127
+
128
+ let sources = try tsc_await { callback in storage. sources. list ( callback: callback) }
129
+ XCTAssertEqual ( sources. count, 0 , " sources should be empty " )
130
+ }
131
+
132
+ // add fails because collection is not found
133
+ guard case . failure = tsc_await ( { callback in packageCollections. addCollection ( mockCollection. source, order: nil , callback: callback) } ) else {
134
+ return XCTFail ( " expected error " )
135
+ }
136
+
137
+ do {
138
+ let list = try tsc_await { callback in packageCollections. listCollections ( callback: callback) }
139
+ XCTAssertEqual ( list. count, 0 , " list count should match " )
140
+
141
+ let sources = try tsc_await { callback in storage. sources. list ( callback: callback) }
142
+ XCTAssertEqual ( sources. count, 0 , " sources should be empty " )
143
+ }
144
+ }
145
+
146
+ func testCollectionPendingTrustConfirmIsKeptOnAdd( ) throws {
147
+ let configuration = PackageCollections . Configuration ( )
148
+ let storage = makeMockStorage ( )
149
+ defer { XCTAssertNoThrow ( try storage. close ( ) ) }
150
+
151
+ let mockCollection = makeMockCollections ( count: 1 , signed: false ) . first!
152
+
153
+ let collectionProviders = [ PackageCollectionsModel . CollectionSourceType. json: MockCollectionsProvider ( [ mockCollection] ) ]
154
+ let metadataProvider = MockMetadataProvider ( [ : ] )
155
+ let packageCollections = PackageCollections ( configuration: configuration, storage: storage, collectionProviders: collectionProviders, metadataProvider: metadataProvider)
156
+
157
+ do {
158
+ let list = try tsc_await { callback in packageCollections. listCollections ( callback: callback) }
159
+ XCTAssertEqual ( list. count, 0 , " list should be empty " )
160
+
161
+ let sources = try tsc_await { callback in storage. sources. list ( callback: callback) }
162
+ XCTAssertEqual ( sources. count, 0 , " sources should be empty " )
163
+ }
164
+
165
+ guard case . failure = tsc_await ( { callback in packageCollections. addCollection ( mockCollection. source, order: nil , callback: callback) } ) else {
166
+ return XCTFail ( " expected error " )
167
+ }
168
+
169
+ do {
170
+ let list = try tsc_await { callback in packageCollections. listCollections ( callback: callback) }
171
+ XCTAssertEqual ( list. count, 0 , " list count should match " )
172
+
173
+ let sources = try tsc_await { callback in storage. sources. list ( callback: callback) }
174
+ XCTAssertEqual ( sources. count, 1 , " sources should match " )
175
+ }
176
+ }
177
+
113
178
func testDelete( ) throws {
114
179
let configuration = PackageCollections . Configuration ( )
115
180
let storage = makeMockStorage ( )
@@ -1115,24 +1180,4 @@ final class PackageCollectionsTests: XCTestCase {
1115
1180
let delta = Date ( ) . timeIntervalSince ( start)
1116
1181
XCTAssert ( delta < 1.0 , " should fetch quickly, took \( delta) " )
1117
1182
}
1118
-
1119
- func testSourceValidation( ) throws {
1120
- let httpsSource = PackageCollectionsModel . CollectionSource ( type: . json, url: URL ( string: " https://feed.mock.io " ) !)
1121
- XCTAssertNil ( httpsSource. validate ( ) , " not expecting errors " )
1122
-
1123
- let httpsSource2 = PackageCollectionsModel . CollectionSource ( type: . json, url: URL ( string: " HTTPS://feed.mock.io " ) !)
1124
- XCTAssertNil ( httpsSource2. validate ( ) , " not expecting errors " )
1125
-
1126
- let httpsSource3 = PackageCollectionsModel . CollectionSource ( type: . json, url: URL ( string: " HttpS://feed.mock.io " ) !)
1127
- XCTAssertNil ( httpsSource3. validate ( ) , " not expecting errors " )
1128
-
1129
- let httpSource = PackageCollectionsModel . CollectionSource ( type: . json, url: URL ( string: " http://feed.mock.io " ) !)
1130
- XCTAssertEqual ( httpSource. validate ( ) ? . count, 1 , " expecting errors " )
1131
-
1132
- let otherProtocolSource = PackageCollectionsModel . CollectionSource ( type: . json, url: URL ( string: " ftp://feed.mock.io " ) !)
1133
- XCTAssertEqual ( otherProtocolSource. validate ( ) ? . count, 1 , " expecting errors " )
1134
-
1135
- let brokenUrlSource = PackageCollectionsModel . CollectionSource ( type: . json, url: URL ( string: " blah " ) !)
1136
- XCTAssertEqual ( brokenUrlSource. validate ( ) ? . count, 1 , " expecting errors " )
1137
- }
1138
1183
}
0 commit comments