mirror of https://github.com/langgenius/dify.git
fix: handle missing `credential_id` (#30051)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This commit is contained in:
parent
95330162a4
commit
a5309bee25
|
|
@ -572,7 +572,7 @@ class DocumentBatchIndexingEstimateApi(DocumentResource):
|
||||||
datasource_type=DatasourceType.NOTION,
|
datasource_type=DatasourceType.NOTION,
|
||||||
notion_info=NotionInfo.model_validate(
|
notion_info=NotionInfo.model_validate(
|
||||||
{
|
{
|
||||||
"credential_id": data_source_info["credential_id"],
|
"credential_id": data_source_info.get("credential_id"),
|
||||||
"notion_workspace_id": data_source_info["notion_workspace_id"],
|
"notion_workspace_id": data_source_info["notion_workspace_id"],
|
||||||
"notion_obj_id": data_source_info["notion_page_id"],
|
"notion_obj_id": data_source_info["notion_page_id"],
|
||||||
"notion_page_type": data_source_info["type"],
|
"notion_page_type": data_source_info["type"],
|
||||||
|
|
|
||||||
|
|
@ -396,7 +396,7 @@ class IndexingRunner:
|
||||||
datasource_type=DatasourceType.NOTION,
|
datasource_type=DatasourceType.NOTION,
|
||||||
notion_info=NotionInfo.model_validate(
|
notion_info=NotionInfo.model_validate(
|
||||||
{
|
{
|
||||||
"credential_id": data_source_info["credential_id"],
|
"credential_id": data_source_info.get("credential_id"),
|
||||||
"notion_workspace_id": data_source_info["notion_workspace_id"],
|
"notion_workspace_id": data_source_info["notion_workspace_id"],
|
||||||
"notion_obj_id": data_source_info["notion_page_id"],
|
"notion_obj_id": data_source_info["notion_page_id"],
|
||||||
"notion_page_type": data_source_info["type"],
|
"notion_page_type": data_source_info["type"],
|
||||||
|
|
|
||||||
|
|
@ -48,13 +48,21 @@ class NotionExtractor(BaseExtractor):
|
||||||
if notion_access_token:
|
if notion_access_token:
|
||||||
self._notion_access_token = notion_access_token
|
self._notion_access_token = notion_access_token
|
||||||
else:
|
else:
|
||||||
|
try:
|
||||||
self._notion_access_token = self._get_access_token(tenant_id, self._credential_id)
|
self._notion_access_token = self._get_access_token(tenant_id, self._credential_id)
|
||||||
if not self._notion_access_token:
|
except Exception as e:
|
||||||
|
logger.warning(
|
||||||
|
(
|
||||||
|
"Failed to get Notion access token from datasource credentials: %s, "
|
||||||
|
"falling back to environment variable NOTION_INTEGRATION_TOKEN"
|
||||||
|
),
|
||||||
|
e,
|
||||||
|
)
|
||||||
integration_token = dify_config.NOTION_INTEGRATION_TOKEN
|
integration_token = dify_config.NOTION_INTEGRATION_TOKEN
|
||||||
if integration_token is None:
|
if integration_token is None:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"Must specify `integration_token` or set environment variable `NOTION_INTEGRATION_TOKEN`."
|
"Must specify `integration_token` or set environment variable `NOTION_INTEGRATION_TOKEN`."
|
||||||
)
|
) from e
|
||||||
|
|
||||||
self._notion_access_token = integration_token
|
self._notion_access_token = integration_token
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ class TestNotionExtractorAuthentication:
|
||||||
def test_init_with_integration_token_fallback(self, mock_get_token, mock_config, mock_document_model):
|
def test_init_with_integration_token_fallback(self, mock_get_token, mock_config, mock_document_model):
|
||||||
"""Test NotionExtractor falls back to integration token when credential not found."""
|
"""Test NotionExtractor falls back to integration token when credential not found."""
|
||||||
# Arrange
|
# Arrange
|
||||||
mock_get_token.return_value = None
|
mock_get_token.side_effect = Exception("No credential id found")
|
||||||
mock_config.NOTION_INTEGRATION_TOKEN = "integration-token-fallback"
|
mock_config.NOTION_INTEGRATION_TOKEN = "integration-token-fallback"
|
||||||
|
|
||||||
# Act
|
# Act
|
||||||
|
|
@ -105,7 +105,7 @@ class TestNotionExtractorAuthentication:
|
||||||
notion_obj_id="page-456",
|
notion_obj_id="page-456",
|
||||||
notion_page_type="page",
|
notion_page_type="page",
|
||||||
tenant_id="tenant-789",
|
tenant_id="tenant-789",
|
||||||
credential_id="cred-123",
|
credential_id=None,
|
||||||
document_model=mock_document_model,
|
document_model=mock_document_model,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -117,7 +117,7 @@ class TestNotionExtractorAuthentication:
|
||||||
def test_init_missing_credentials_raises_error(self, mock_get_token, mock_config, mock_document_model):
|
def test_init_missing_credentials_raises_error(self, mock_get_token, mock_config, mock_document_model):
|
||||||
"""Test NotionExtractor raises error when no credentials available."""
|
"""Test NotionExtractor raises error when no credentials available."""
|
||||||
# Arrange
|
# Arrange
|
||||||
mock_get_token.return_value = None
|
mock_get_token.side_effect = Exception("No credential id found")
|
||||||
mock_config.NOTION_INTEGRATION_TOKEN = None
|
mock_config.NOTION_INTEGRATION_TOKEN = None
|
||||||
|
|
||||||
# Act & Assert
|
# Act & Assert
|
||||||
|
|
@ -127,7 +127,7 @@ class TestNotionExtractorAuthentication:
|
||||||
notion_obj_id="page-456",
|
notion_obj_id="page-456",
|
||||||
notion_page_type="page",
|
notion_page_type="page",
|
||||||
tenant_id="tenant-789",
|
tenant_id="tenant-789",
|
||||||
credential_id="cred-123",
|
credential_id=None,
|
||||||
document_model=mock_document_model,
|
document_model=mock_document_model,
|
||||||
)
|
)
|
||||||
assert "Must specify `integration_token`" in str(exc_info.value)
|
assert "Must specify `integration_token`" in str(exc_info.value)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue