@@ -36,6 +36,10 @@ func TestRepositoryCreatesOnlyRoomIssuedStateBeforeActivation(t *testing.T) {
|
||||
TenantID: "10000000-0000-0000-0000-000000000001", Status: "registered",
|
||||
}
|
||||
resume := true
|
||||
if _, err := tx.Exec(ctx, `UPDATE consent_snapshot SET effective_consents='{"voice_chat":true,"transcript_storage":true}'::jsonb
|
||||
WHERE tenant_id=$1::uuid AND subject_id=(SELECT subject_id FROM device_binding WHERE device_id=$2::uuid AND unbound_at IS NULL LIMIT 1)`, identity.TenantID, identity.ID); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := tx.Exec(ctx, `UPDATE device SET minimum_firmware_version='9.0.0' WHERE id=$1::uuid`, identity.ID); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -85,16 +89,20 @@ func TestRepositoryCreatesOnlyRoomIssuedStateBeforeActivation(t *testing.T) {
|
||||
if !credentialIssuedAt.Equal(now) || !credentialExpiresAt.Equal(now.Add(5*time.Minute)) {
|
||||
t.Fatalf("credential metadata issued=%s expires=%s", credentialIssuedAt, credentialExpiresAt)
|
||||
}
|
||||
var desiredRevision int64
|
||||
if err := tx.QueryRow(ctx, `SELECT desired_revision FROM device_twin WHERE device_id=$1::uuid`, identity.ID).Scan(&desiredRevision); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
activation, err := NewRepository().Activate(ctx, tx, identity, response.ConversationID, "request-activate", ActivateInput{
|
||||
JoinedAt: now.Add(time.Second), RoomID: response.RTC.RoomID, RTCUserID: response.RTC.UserID,
|
||||
RTCJoinResult: "success", ConfigRevision: 1,
|
||||
RTCJoinResult: "success", ConfigRevision: desiredRevision,
|
||||
}, now.Add(2*time.Second))
|
||||
if err != nil || !activation.StartRequested || activation.Response.Status != "STARTING_AGENT" {
|
||||
t.Fatalf("activation=%#v err=%v", activation, err)
|
||||
}
|
||||
duplicate, err := NewRepository().Activate(ctx, tx, identity, response.ConversationID, "request-activate-duplicate", ActivateInput{
|
||||
JoinedAt: now.Add(time.Second), RoomID: response.RTC.RoomID, RTCUserID: response.RTC.UserID,
|
||||
RTCJoinResult: "success", ConfigRevision: 1,
|
||||
RTCJoinResult: "success", ConfigRevision: desiredRevision,
|
||||
}, now.Add(3*time.Second))
|
||||
if err != nil || duplicate.StartRequested || duplicate.Response.Status != "STARTING_AGENT" {
|
||||
t.Fatalf("duplicate activation=%#v err=%v", duplicate, err)
|
||||
@@ -118,7 +126,7 @@ func TestRepositoryCreatesOnlyRoomIssuedStateBeforeActivation(t *testing.T) {
|
||||
heartbeatInput := HeartbeatInput{
|
||||
SequenceNo: 2, DeviceTime: now.Add(4 * time.Second), MonotonicMS: &monotonicMS,
|
||||
ConversationStatus: "ACTIVE", RTC: RTCHeartbeat{Joined: true, Uplink: true, Downlink: true},
|
||||
Network: Network{Type: "wifi"}, FirmwareVersion: "1.0.0", ReportedConfigRevision: 1,
|
||||
Network: Network{Type: "wifi"}, FirmwareVersion: "1.0.0", ReportedConfigRevision: desiredRevision,
|
||||
RecordingQueue: RecordingQueue{PendingSegments: 2}, CommandResults: []json.RawMessage{},
|
||||
}
|
||||
heartbeat, err := NewRepository().Heartbeat(ctx, tx, identity, response.ConversationID, heartbeatInput, now.Add(4*time.Second), time.Minute, 5*time.Minute, time.Minute)
|
||||
@@ -132,7 +140,7 @@ func TestRepositoryCreatesOnlyRoomIssuedStateBeforeActivation(t *testing.T) {
|
||||
t.Fatalf("stale heartbeat=%#v err=%v", stale, err)
|
||||
}
|
||||
heartbeatInput.SequenceNo = 3
|
||||
heartbeatInput.ReportedConfigRevision = 2
|
||||
heartbeatInput.ReportedConfigRevision = desiredRevision + 1
|
||||
if _, err := NewRepository().Heartbeat(ctx, tx, identity, response.ConversationID, heartbeatInput, now.Add(31*time.Second), time.Minute, 5*time.Minute, time.Minute); !errors.Is(err, ErrConfigVersionConflict) {
|
||||
t.Fatalf("future configuration revision error=%v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user