1package protocol
2
3import (
4 "testing"
5
6 "github.com/bnema/vev/internal/domain"
7 "github.com/stretchr/testify/require"
8)
9
10func TestAttachmentValidation(t *testing.T) {
11 target := ExactSessionTarget{LifecycleID: domain.SessionLifecycleID{1}, SessionName: "work"}
12 identity := CommittedRouteIdentity{Target: target}
13 for _, tt := range []struct {
14 name string
15 message interface{ Validate() error }
16 valid bool
17 }{
18 {"suspend", SuspendAttachment{RequestID: 1}, true},
19 {"suspend zero", SuspendAttachment{}, false},
20 {"suspended", AttachmentSuspended{RequestID: 1, Target: target}, true},
21 {"suspended zero", AttachmentSuspended{Target: target}, false},
22 {"suspended target", AttachmentSuspended{RequestID: 1}, false},
23 {"activate", ActivateAttachment{RequestID: 2, Target: target, Size: domain.Size{Cols: 80, Rows: 24}}, true},
24 {"activate zero", ActivateAttachment{Target: target, Size: domain.Size{Cols: 80, Rows: 24}}, false},
25 {"activate target", ActivateAttachment{RequestID: 2, Size: domain.Size{Cols: 80, Rows: 24}}, false},
26 {"activate geometry", ActivateAttachment{RequestID: 2, Target: target}, false},
27 {"activate pixels", ActivateAttachment{RequestID: 2, Target: target, Size: domain.Size{Cols: 80, Rows: 24}, PixelWidth: 1}, false},
28 {"activated", AttachmentActivated{RequestID: 2, Identity: identity, Epoch: 2, State: 1, ViewPublication: 3}, true},
29 {"activated zero", AttachmentActivated{Identity: identity, Epoch: 2, State: 1, ViewPublication: 3}, false},
30 {"activated identity", AttachmentActivated{RequestID: 2, Epoch: 2, State: 1, ViewPublication: 3}, false},
31 {"activated epoch", AttachmentActivated{RequestID: 2, Identity: identity, State: 1, ViewPublication: 3}, false},
32 {"activated state", AttachmentActivated{RequestID: 2, Identity: identity, Epoch: 2, ViewPublication: 3}, false},
33 {"activated publication", AttachmentActivated{RequestID: 2, Identity: identity, Epoch: 2, State: 1}, false},
34 } {
35 t.Run(tt.name, func(t *testing.T) {
36 if tt.valid {
37 require.NoError(t, tt.message.Validate())
38 } else {
39 require.Error(t, tt.message.Validate())
40 }
41 })
42 }
43}