@@ -116,9 +116,10 @@ func TestVerifyRegisterNodeArgs(t *testing.T) {
116116 }
117117
118118 for _ , tc := range []struct {
119- n node.Node
120- err error
121- msg string
119+ n node.Node
120+ err error
121+ msg string
122+ isFeatureVersion242 bool
122123 }{
123124 {
124125 node.Node {
@@ -145,6 +146,7 @@ func TestVerifyRegisterNodeArgs(t *testing.T) {
145146 },
146147 ErrInvalidArgument ,
147148 "invalid consensus validator node (missing P2P address)" ,
149+ true ,
148150 },
149151 {
150152 node.Node {
@@ -172,6 +174,7 @@ func TestVerifyRegisterNodeArgs(t *testing.T) {
172174 },
173175 nil ,
174176 "valid consensus validator node" ,
177+ true ,
175178 },
176179 {
177180 node.Node {
@@ -202,6 +205,57 @@ func TestVerifyRegisterNodeArgs(t *testing.T) {
202205 },
203206 ErrInvalidArgument ,
204207 "invalid compute worker node (nil runtime)" ,
208+ true ,
209+ },
210+ {
211+ node.Node {
212+ Versioned : cbor .NewVersioned (2 ),
213+ ID : nodeSigner .Public (),
214+ EntityID : entityID1 ,
215+ Consensus : node.ConsensusInfo {
216+ ID : nodeConsensusSigner .Public (),
217+ },
218+ TLS : node.TLSInfo {
219+ PubKey : nodeTLSSigner .Public (),
220+ },
221+ P2P : node.P2PInfo {
222+ ID : nodeP2PSigner .Public (),
223+ Addresses : []node.Address {{IP : net .IPv4 (127 , 0 , 0 , 1 ), Port : 9002 }},
224+ },
225+ VRF : node.VRFInfo {
226+ ID : nodeVRFSigner .Public (),
227+ },
228+ Roles : node .RoleObserver ,
229+ Expiration : 11 ,
230+ },
231+ nil ,
232+ "observer without runtimes is allowed with old consensus feature version" ,
233+ false ,
234+ },
235+ {
236+ node.Node {
237+ Versioned : cbor .NewVersioned (2 ),
238+ ID : nodeSigner .Public (),
239+ EntityID : entityID1 ,
240+ Consensus : node.ConsensusInfo {
241+ ID : nodeConsensusSigner .Public (),
242+ },
243+ TLS : node.TLSInfo {
244+ PubKey : nodeTLSSigner .Public (),
245+ },
246+ P2P : node.P2PInfo {
247+ ID : nodeP2PSigner .Public (),
248+ Addresses : []node.Address {{IP : net .IPv4 (127 , 0 , 0 , 1 ), Port : 9002 }},
249+ },
250+ VRF : node.VRFInfo {
251+ ID : nodeVRFSigner .Public (),
252+ },
253+ Roles : node .RoleObserver ,
254+ Expiration : 11 ,
255+ },
256+ ErrInvalidArgument ,
257+ "observer without runtimes is not allowed" ,
258+ true ,
205259 },
206260 } {
207261
@@ -211,7 +265,7 @@ func TestVerifyRegisterNodeArgs(t *testing.T) {
211265 & tc .n ,
212266 )
213267 require .NoError (err , "singing node" )
214- _ , _ , err = VerifyRegisterNodeArgs (context .Background (), params , logger , signedNode , entity , time .Now (), 1 , false , false , beacon .EpochTime (10 ), rtLookup , ndLookup , true )
268+ _ , _ , err = VerifyRegisterNodeArgs (context .Background (), params , logger , signedNode , entity , time .Now (), 1 , false , false , beacon .EpochTime (10 ), rtLookup , ndLookup , tc . isFeatureVersion242 )
215269 switch {
216270 case tc .err == nil :
217271 require .NoError (err , tc .msg )
0 commit comments