Skip to content

Commit e5c1142

Browse files
committed
Add handshake pin tests
1 parent aeba705 commit e5c1142

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed

ship/hs_pin_test.go

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
package ship
2+
3+
import (
4+
"testing"
5+
6+
"github.com/enbility/eebus-go/ship/model"
7+
"github.com/stretchr/testify/assert"
8+
"github.com/stretchr/testify/suite"
9+
)
10+
11+
func TestPinSuite(t *testing.T) {
12+
suite.Run(t, new(PinSuite))
13+
}
14+
15+
type PinSuite struct {
16+
suite.Suite
17+
}
18+
19+
func (s *PinSuite) Test_Init() {
20+
sut, data := initTest(ShipRoleClient)
21+
22+
sut.setState(smePinStateCheckInit)
23+
sut.handleState(false, nil)
24+
25+
assert.Equal(s.T(), false, sut.handshakeTimerRunning)
26+
assert.Equal(s.T(), smePinStateCheckListen, sut.getState())
27+
assert.NotNil(s.T(), data.lastMessage())
28+
29+
shutdownTest(sut)
30+
}
31+
32+
func (s *PinSuite) Test_CheckListen_None() {
33+
sut, data := initTest(ShipRoleClient)
34+
35+
sut.setState(smePinStateCheckListen)
36+
37+
pinState := model.ConnectionPinState{
38+
ConnectionPinState: model.ConnectionPinStateType{
39+
PinState: model.PinStateTypeNone,
40+
},
41+
}
42+
msg, err := sut.shipMessage(model.MsgTypeControl, pinState)
43+
assert.Nil(s.T(), err)
44+
assert.NotNil(s.T(), msg)
45+
46+
sut.handleState(false, msg)
47+
48+
assert.Equal(s.T(), true, sut.handshakeTimerRunning)
49+
assert.Equal(s.T(), smeAccessMethodsRequest, sut.getState())
50+
assert.NotNil(s.T(), data.lastMessage())
51+
52+
shutdownTest(sut)
53+
}
54+
55+
func (s *PinSuite) Test_CheckListen_Required() {
56+
sut, data := initTest(ShipRoleClient)
57+
58+
sut.setState(smePinStateCheckListen)
59+
60+
pinState := model.ConnectionPinState{
61+
ConnectionPinState: model.ConnectionPinStateType{
62+
PinState: model.PinStateTypeRequired,
63+
},
64+
}
65+
msg, err := sut.shipMessage(model.MsgTypeControl, pinState)
66+
assert.Nil(s.T(), err)
67+
assert.NotNil(s.T(), msg)
68+
69+
sut.handleState(false, msg)
70+
71+
assert.Equal(s.T(), false, sut.handshakeTimerRunning)
72+
assert.Equal(s.T(), smeError, sut.getState())
73+
assert.NotNil(s.T(), data.lastMessage())
74+
75+
shutdownTest(sut)
76+
}
77+
78+
func (s *PinSuite) Test_CheckListen_Optional() {
79+
sut, data := initTest(ShipRoleClient)
80+
81+
sut.setState(smePinStateCheckListen)
82+
83+
pinState := model.ConnectionPinState{
84+
ConnectionPinState: model.ConnectionPinStateType{
85+
PinState: model.PinStateTypeOptional,
86+
},
87+
}
88+
msg, err := sut.shipMessage(model.MsgTypeControl, pinState)
89+
assert.Nil(s.T(), err)
90+
assert.NotNil(s.T(), msg)
91+
92+
sut.handleState(false, msg)
93+
94+
assert.Equal(s.T(), false, sut.handshakeTimerRunning)
95+
assert.Equal(s.T(), smeError, sut.getState())
96+
assert.NotNil(s.T(), data.lastMessage())
97+
98+
shutdownTest(sut)
99+
}
100+
101+
func (s *PinSuite) Test_CheckListen_Ok() {
102+
sut, data := initTest(ShipRoleClient)
103+
104+
sut.setState(smePinStateCheckListen)
105+
106+
pinState := model.ConnectionPinState{
107+
ConnectionPinState: model.ConnectionPinStateType{
108+
PinState: model.PinStateTypePinOk,
109+
},
110+
}
111+
msg, err := sut.shipMessage(model.MsgTypeControl, pinState)
112+
assert.Nil(s.T(), err)
113+
assert.NotNil(s.T(), msg)
114+
115+
sut.handleState(false, msg)
116+
117+
assert.Equal(s.T(), false, sut.handshakeTimerRunning)
118+
assert.Equal(s.T(), smeError, sut.getState())
119+
assert.NotNil(s.T(), data.lastMessage())
120+
121+
shutdownTest(sut)
122+
}

0 commit comments

Comments
 (0)