@@ -491,6 +491,54 @@ final class GenerativeModelVertexAITests: XCTestCase {
491
491
XCTAssertEqual ( usageMetadata. toolUsePromptTokenCount, 371 )
492
492
}
493
493
494
+ func testGenerateContent_success_urlContext( ) async throws {
495
+ MockURLProtocol . requestHandler = try GenerativeModelTestUtil . httpRequestHandler (
496
+ forResource: " unary-success-url-context " ,
497
+ withExtension: " json " ,
498
+ subdirectory: vertexSubdirectory
499
+ )
500
+
501
+ let response = try await model. generateContent ( testPrompt)
502
+
503
+ XCTAssertEqual ( response. candidates. count, 1 )
504
+ let candidate = try XCTUnwrap ( response. candidates. first)
505
+ let urlContextMetadata = try XCTUnwrap ( candidate. urlContextMetadata)
506
+ XCTAssertEqual ( urlContextMetadata. urlMetadata. count, 1 )
507
+ let urlMetadata = try XCTUnwrap ( urlContextMetadata. urlMetadata. first)
508
+ let retrievedURL = try XCTUnwrap ( urlMetadata. retrievedURL)
509
+ XCTAssertEqual (
510
+ retrievedURL,
511
+ URL ( string: " https://berkshirehathaway.com " )
512
+ )
513
+ XCTAssertEqual ( urlMetadata. retrievalStatus, . success)
514
+ let usageMetadata = try XCTUnwrap ( response. usageMetadata)
515
+ XCTAssertEqual ( usageMetadata. toolUsePromptTokenCount, 34 )
516
+ XCTAssertEqual ( usageMetadata. thoughtsTokenCount, 36 )
517
+ }
518
+
519
+ func testGenerateContent_success_urlContext_mixedValidity( ) async throws {
520
+ MockURLProtocol . requestHandler = try GenerativeModelTestUtil . httpRequestHandler (
521
+ forResource: " unary-success-url-context-mixed-validity " ,
522
+ withExtension: " json " ,
523
+ subdirectory: vertexSubdirectory
524
+ )
525
+
526
+ let response = try await model. generateContent ( testPrompt)
527
+
528
+ let candidate = try XCTUnwrap ( response. candidates. first)
529
+ let urlContextMetadata = try XCTUnwrap ( candidate. urlContextMetadata)
530
+ XCTAssertEqual ( urlContextMetadata. urlMetadata. count, 3 )
531
+
532
+ let paywallURLMetadata = try XCTUnwrap ( urlContextMetadata. urlMetadata [ 0 ] )
533
+ XCTAssertEqual ( paywallURLMetadata. retrievalStatus, . error)
534
+
535
+ let successURLMetadata = try XCTUnwrap ( urlContextMetadata. urlMetadata [ 1 ] )
536
+ XCTAssertEqual ( successURLMetadata. retrievalStatus, . success)
537
+
538
+ let errorURLMetadata = try XCTUnwrap ( urlContextMetadata. urlMetadata [ 2 ] )
539
+ XCTAssertEqual ( errorURLMetadata. retrievalStatus, . error)
540
+ }
541
+
494
542
func testGenerateContent_success_image_invalidSafetyRatingsIgnored( ) async throws {
495
543
MockURLProtocol . requestHandler = try GenerativeModelTestUtil . httpRequestHandler (
496
544
forResource: " unary-success-image-invalid-safety-ratings " ,
0 commit comments