@@ -453,6 +453,7 @@ final class GenerativeModelTests: XCTestCase {
453
453
}
454
454
}
455
455
456
+ // TODO(andrewheard): Remove this test case after the Vertex AI in Firebase API launch.
456
457
func testGenerateContent_failure_firebaseMLAPINotEnabled( ) async throws {
457
458
let expectedStatusCode = 403
458
459
MockURLProtocol
@@ -476,6 +477,30 @@ final class GenerativeModelTests: XCTestCase {
476
477
}
477
478
}
478
479
480
+ func testGenerateContent_failure_firebaseVertexAIAPINotEnabled( ) async throws {
481
+ let expectedStatusCode = 403
482
+ MockURLProtocol
483
+ . requestHandler = try httpRequestHandler (
484
+ forResource: " unary-failure-firebasevertexai-api-not-enabled " ,
485
+ withExtension: " json " ,
486
+ statusCode: expectedStatusCode
487
+ )
488
+
489
+ do {
490
+ _ = try await model. generateContent ( testPrompt)
491
+ XCTFail ( " Should throw GenerateContentError.internalError; no error thrown. " )
492
+ } catch let GenerateContentError . internalError( error as RPCError ) {
493
+ XCTAssertEqual ( error. httpResponseCode, expectedStatusCode)
494
+ XCTAssertEqual ( error. status, . permissionDenied)
495
+ XCTAssertTrue ( error. message
496
+ . starts ( with: " Vertex AI in Firebase API has not been used in project " ) )
497
+ XCTAssertTrue ( error. isVertexAIInFirebaseServiceDisabledError ( ) )
498
+ return
499
+ } catch {
500
+ XCTFail ( " Should throw GenerateContentError.internalError(RPCError); error thrown: \( error) " )
501
+ }
502
+ }
503
+
479
504
func testGenerateContent_failure_emptyContent( ) async throws {
480
505
MockURLProtocol
481
506
. requestHandler = try httpRequestHandler (
@@ -774,6 +799,7 @@ final class GenerativeModelTests: XCTestCase {
774
799
XCTFail ( " Should have caught an error. " )
775
800
}
776
801
802
+ // TODO(andrewheard): Remove this test case after the Vertex AI in Firebase API launch.
777
803
func testGenerateContentStream_failure_firebaseMLAPINotEnabled( ) async throws {
778
804
let expectedStatusCode = 403
779
805
MockURLProtocol
@@ -799,6 +825,32 @@ final class GenerativeModelTests: XCTestCase {
799
825
XCTFail ( " Should have caught an error. " )
800
826
}
801
827
828
+ func testGenerateContentStream_failure_vertexAIInFirebaseAPINotEnabled( ) async throws {
829
+ let expectedStatusCode = 403
830
+ MockURLProtocol
831
+ . requestHandler = try httpRequestHandler (
832
+ forResource: " unary-failure-firebasevertexai-api-not-enabled " ,
833
+ withExtension: " json " ,
834
+ statusCode: expectedStatusCode
835
+ )
836
+
837
+ do {
838
+ let stream = try model. generateContentStream ( testPrompt)
839
+ for try await _ in stream {
840
+ XCTFail ( " No content is there, this shouldn't happen. " )
841
+ }
842
+ } catch let GenerateContentError . internalError( error as RPCError ) {
843
+ XCTAssertEqual ( error. httpResponseCode, expectedStatusCode)
844
+ XCTAssertEqual ( error. status, . permissionDenied)
845
+ XCTAssertTrue ( error. message
846
+ . starts ( with: " Vertex AI in Firebase API has not been used in project " ) )
847
+ XCTAssertTrue ( error. isVertexAIInFirebaseServiceDisabledError ( ) )
848
+ return
849
+ }
850
+
851
+ XCTFail ( " Should have caught an error. " )
852
+ }
853
+
802
854
func testGenerateContentStream_failureEmptyContent( ) async throws {
803
855
MockURLProtocol
804
856
. requestHandler = try httpRequestHandler (
0 commit comments