@@ -453,6 +453,7 @@ final class GenerativeModelTests: XCTestCase {
453453 }
454454 }
455455
456+ // TODO(andrewheard): Remove this test case after the Vertex AI in Firebase API launch.
456457 func testGenerateContent_failure_firebaseMLAPINotEnabled( ) async throws {
457458 let expectedStatusCode = 403
458459 MockURLProtocol
@@ -476,6 +477,30 @@ final class GenerativeModelTests: XCTestCase {
476477 }
477478 }
478479
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+
479504 func testGenerateContent_failure_emptyContent( ) async throws {
480505 MockURLProtocol
481506 . requestHandler = try httpRequestHandler (
@@ -774,6 +799,7 @@ final class GenerativeModelTests: XCTestCase {
774799 XCTFail ( " Should have caught an error. " )
775800 }
776801
802+ // TODO(andrewheard): Remove this test case after the Vertex AI in Firebase API launch.
777803 func testGenerateContentStream_failure_firebaseMLAPINotEnabled( ) async throws {
778804 let expectedStatusCode = 403
779805 MockURLProtocol
@@ -799,6 +825,32 @@ final class GenerativeModelTests: XCTestCase {
799825 XCTFail ( " Should have caught an error. " )
800826 }
801827
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+
802854 func testGenerateContentStream_failureEmptyContent( ) async throws {
803855 MockURLProtocol
804856 . requestHandler = try httpRequestHandler (
0 commit comments