mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-13 22:15:10 +00:00
feat: conv visibility
This commit is contained in:
1 parent
6d4d96d12d
commit
82bacfdb2b
18 files changed
+361
-110
No files matched your search
@@ -139,7 +139,7 @@ class TestCompleteStreamMethod:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token=decoded_token,
|
||||
should_save_conversation=False,
|
||||
should_persist=False,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -171,7 +171,7 @@ class TestCompleteStreamMethod:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token=decoded_token,
|
||||
should_save_conversation=False,
|
||||
should_persist=False,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -197,7 +197,7 @@ class TestCompleteStreamMethod:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token=decoded_token,
|
||||
should_save_conversation=False,
|
||||
should_persist=False,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -239,7 +239,7 @@ class TestCompleteStreamMethod:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token=decoded_token,
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -299,7 +299,7 @@ class TestCompleteStreamMethod:
|
||||
conversation_id=None, # caller had no conv yet
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "user-prop"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -330,7 +330,7 @@ class TestCompleteStreamMethod:
|
||||
conversation_id="conv-1",
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "user123"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
"""Unit tests for ``resolve_persistence`` (persist + sidebar visibility)."""
|
||||
|
||||
import pytest
|
||||
|
||||
from application.api.answer.services.persistence_policy import (
|
||||
VISIBILITY_HIDDEN,
|
||||
VISIBILITY_LISTED,
|
||||
resolve_persistence,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
class TestResolvePersistence:
|
||||
def test_first_party_default_lists(self):
|
||||
persist, visibility = resolve_persistence(display_flag=None)
|
||||
assert persist is True
|
||||
assert visibility == VISIBILITY_LISTED
|
||||
|
||||
def test_api_key_caller_defaults_hidden(self):
|
||||
persist, visibility = resolve_persistence(display_flag=None, api_key="k-1")
|
||||
assert persist is True
|
||||
assert visibility == VISIBILITY_HIDDEN
|
||||
|
||||
def test_shared_usage_defaults_hidden(self):
|
||||
_, visibility = resolve_persistence(display_flag=None, is_shared_usage=True)
|
||||
assert visibility == VISIBILITY_HIDDEN
|
||||
|
||||
def test_explicit_display_true_lists_api_key_caller(self):
|
||||
_, visibility = resolve_persistence(display_flag=True, api_key="k-1")
|
||||
assert visibility == VISIBILITY_LISTED
|
||||
|
||||
def test_explicit_display_false_hides_first_party(self):
|
||||
persist, visibility = resolve_persistence(display_flag=False)
|
||||
# Still persisted, just not shown in the sidebar.
|
||||
assert persist is True
|
||||
assert visibility == VISIBILITY_HIDDEN
|
||||
|
||||
def test_persist_opt_out(self):
|
||||
persist, _ = resolve_persistence(display_flag=None, persist_flag=False)
|
||||
assert persist is False
|
||||
|
||||
def test_persist_defaults_true_for_hidden_api_caller(self):
|
||||
persist, _ = resolve_persistence(display_flag=False, api_key="k-1")
|
||||
assert persist is True
|
||||
@@ -98,7 +98,7 @@ class TestCompleteStreamToolCalls:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=False,
|
||||
should_persist=False,
|
||||
)
|
||||
)
|
||||
tool_chunks = [s for s in stream if '"type": "tool_calls"' in s]
|
||||
@@ -124,7 +124,7 @@ class TestCompleteStreamToolCalls:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=False,
|
||||
should_persist=False,
|
||||
)
|
||||
)
|
||||
thought_chunks = [s for s in stream if '"type": "thought"' in s]
|
||||
@@ -159,7 +159,7 @@ class TestCompleteStreamStructuredOutput:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=False,
|
||||
should_persist=False,
|
||||
)
|
||||
)
|
||||
structured_chunks = [
|
||||
@@ -192,7 +192,7 @@ class TestCompleteStreamMetadata:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=False,
|
||||
should_persist=False,
|
||||
)
|
||||
)
|
||||
# Should not crash, metadata handled silently
|
||||
@@ -225,7 +225,7 @@ class TestCompleteStreamIsNoneDoc:
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
isNoneDoc=True,
|
||||
should_save_conversation=False,
|
||||
should_persist=False,
|
||||
)
|
||||
)
|
||||
# Verify stream completes without error
|
||||
@@ -256,7 +256,7 @@ class TestCompleteStreamErrorType:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=False,
|
||||
should_persist=False,
|
||||
)
|
||||
)
|
||||
error_chunks = [s for s in stream if '"type": "error"' in s]
|
||||
@@ -281,7 +281,7 @@ class TestCompleteStreamErrorType:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=False,
|
||||
should_persist=False,
|
||||
)
|
||||
)
|
||||
custom_chunks = [s for s in stream if '"type": "custom_event"' in s]
|
||||
@@ -426,7 +426,7 @@ class TestCompleteStreamCompressionMetadata:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
)
|
||||
@@ -470,7 +470,7 @@ class TestCompleteStreamCompressionMetadata:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
)
|
||||
@@ -501,7 +501,7 @@ class TestCompleteStreamLogTruncation:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=False,
|
||||
should_persist=False,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -545,7 +545,7 @@ class TestCompleteStreamGeneratorExit:
|
||||
conversation_id="conv1",
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
|
||||
@@ -586,7 +586,7 @@ class TestCompleteStreamGeneratorExit:
|
||||
conversation_id="conv1",
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
isNoneDoc=True,
|
||||
)
|
||||
@@ -628,7 +628,7 @@ class TestCompleteStreamGeneratorExit:
|
||||
conversation_id="conv1",
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
|
||||
@@ -688,7 +688,7 @@ class TestCompleteStreamGeneratorExit:
|
||||
conversation_id="conv1",
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
# Drain the early ``message_id`` event, then close before
|
||||
@@ -770,7 +770,7 @@ class TestCompleteStreamGeneratorExit:
|
||||
conversation_id="conv1",
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
next(gen) # message_id frame
|
||||
@@ -850,7 +850,7 @@ class TestCompleteStreamGeneratorExit:
|
||||
conversation_id="conv1",
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
next(gen) # message_id frame
|
||||
@@ -951,7 +951,7 @@ class TestCompleteStreamWalAcceptance:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u-acceptance"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
)
|
||||
@@ -1023,7 +1023,7 @@ class TestCompleteStreamWalAcceptance:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u-tap"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
)
|
||||
@@ -1103,7 +1103,7 @@ class TestCompleteStreamWalAcceptance:
|
||||
conversation_id=str(conv_id),
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": user_id},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
_continuation={
|
||||
"messages": [],
|
||||
@@ -1153,7 +1153,7 @@ class TestCompleteStreamWalAcceptance:
|
||||
conversation_id=None,
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u-request-id"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
)
|
||||
@@ -1215,7 +1215,7 @@ class TestStreamingHeartbeatSeed:
|
||||
conversation_id="conv1",
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
)
|
||||
@@ -1270,7 +1270,7 @@ class TestStreamingHeartbeatSeed:
|
||||
conversation_id="conv1",
|
||||
user_api_key=None,
|
||||
decoded_token={"sub": "u"},
|
||||
should_save_conversation=True,
|
||||
should_persist=True,
|
||||
model_id="gpt-4",
|
||||
)
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user