-
Notifications
You must be signed in to change notification settings - Fork 2.8k
fix: issue 3772 #3773
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
fix: issue 3772 #3773
Conversation
…text taken into account.
Summary of ChangesHello @guillaumeblaquiere, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request addresses a critical bug in the authentication flow where the Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
|
Response from ADK Triaging Agent Hello @guillaumeblaquiere, thank you for creating this PR! This PR is a bug fix, could you please provide logs or screenshot after the fix is applied? This information will help reviewers to review your PR more efficiently. Thanks! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request addresses a critical security issue where one user's credentials could be inadvertently used for another. The fix, which removes reading from the in-memory cached exchanged_auth_credential, is correct. This change effectively mitigates the problem by forcing a lookup from the user-specific credential service. The removed caching logic was likely intended for a single-user context but is unsafe in a multi-user environment where CredentialManager instances might be shared. I have one comment regarding follow-up changes to documentation and tests that are affected by this removal.
|
@ryanaiagent @surajksharma07 I removed the useless (and in error) test because it tested the deleted line. |
|
Hi @guillaumeblaquiere , we appreciate your patience and support. Can you please fix the failing unit tests. |
|
@ryanaiagent unit test fixed |
|
/gemini review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
The pull request addresses an issue with credential management for multiple users by removing an exchange check. It also includes an update to the pyproject.toml file to configure pythonpath for pytest, which is a good practice for module resolution. Additionally, several test mocks in test_remote_a2a_agent.py have been updated, primarily switching from create_autospec to MagicMock for A2AClient instances and directly accessing an agent's internal converter attribute.
| import tempfile | ||
| from unittest.mock import AsyncMock | ||
| from unittest.mock import create_autospec | ||
| from unittest.mock import MagicMock |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While MagicMock is functional, create_autospec provides stronger type checking and ensures that the mock adheres more closely to the A2AClient interface. This can help catch potential API mismatches or typos during testing, leading to more robust tests. Consider using create_autospec for better test safety.
| from unittest.mock import MagicMock | |
| from unittest.mock import create_autospec |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Test failed if I use create_autospec
|
|
||
| # Mock A2A client | ||
| mock_a2a_client = create_autospec(spec=A2AClient, instance=True) | ||
| mock_a2a_client = MagicMock(spec=A2AClient) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changing from create_autospec(spec=A2AClient, instance=True) to MagicMock(spec=A2AClient) reduces the strictness of the mock. create_autospec is generally preferred for unit tests as it ensures the mock's interface matches the real object, which can prevent subtle bugs. I recommend reverting to create_autospec for improved test robustness.
| mock_a2a_client = MagicMock(spec=A2AClient) | |
| mock_a2a_client = create_autospec(spec=A2AClient, instance=True) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Test failed if I use create_autospec
|
|
||
| # Mock A2A client | ||
| mock_a2a_client = create_autospec(spec=A2AClient, instance=True) | ||
| mock_a2a_client = MagicMock(spec=A2AClient) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changing from create_autospec(spec=A2AClient, instance=True) to MagicMock(spec=A2AClient) reduces the strictness of the mock. create_autospec is generally preferred for unit tests as it ensures the mock's interface matches the real object, which can prevent subtle bugs. I recommend reverting to create_autospec for improved test robustness.
| mock_a2a_client = MagicMock(spec=A2AClient) | |
| mock_a2a_client = create_autospec(spec=A2AClient, instance=True) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Test failed if I use create_autospec
|
|
||
| # Mock A2A client | ||
| mock_a2a_client = create_autospec(spec=A2AClient, instance=True) | ||
| mock_a2a_client = MagicMock(spec=A2AClient) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changing from create_autospec(spec=A2AClient, instance=True) to MagicMock(spec=A2AClient) reduces the strictness of the mock. create_autospec is generally preferred for unit tests as it ensures the mock's interface matches the real object, which can prevent subtle bugs. I recommend reverting to create_autospec for improved test robustness.
| mock_a2a_client = MagicMock(spec=A2AClient) | |
| mock_a2a_client = create_autospec(spec=A2AClient, instance=True) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Test failed if I use create_autospec
Link to Issue or Description of Change
1. Link to an existing issue (if applicable):
Problem:
The credential was asked only for the first user connected to the app. Then the credential_manager always served the previous exchange
Solution:
I removed the exchange check and use. I do not find other alternative. I didn't understand the usefulness of this check and use.
Testing Plan
No test broken
Manual End-to-End (E2E) Tests:
This removal solve the issue with multiple user in the same instance. Each of them must authenticated themselve