@@ -153,3 +153,88 @@ def test_assign_msg_type_version_to_model_inst(self):
153
153
assert "1.0" in test_req ._type
154
154
assert "1.2" in test_msg ._type
155
155
assert "1.1" in InvitationMessage .Meta .message_type
156
+
157
+ def test_goal_and_code_model (self ):
158
+ test_msg = InvitationMessage ()
159
+ assert test_msg .goal is None
160
+ assert test_msg .goal_code is None
161
+ test_msg = InvitationMessage (goal = "pass test" , goal_code = "pytest.pass" )
162
+ assert test_msg .goal == "pass test"
163
+ assert test_msg .goal_code == "pytest.pass"
164
+
165
+ def test_mutual_inclusive_goal_and_goal_code (self ):
166
+ msg = {"aries" : "message" }
167
+ deco = InvitationMessage .wrap_message (msg )
168
+
169
+ # populate both goal and goal_code - good
170
+ obj_x = {
171
+ "label" : "label" ,
172
+ "requests~attach" : [deco .serialize ()],
173
+ "goal_code" : "pytest.pass" ,
174
+ "goal" : "pass test" ,
175
+ }
176
+
177
+ errs = InvitationMessageSchema ().validate (obj_x )
178
+ assert errs == {}
179
+
180
+ # do not include goal and goal_code - good
181
+ obj_x = {
182
+ "label" : "label" ,
183
+ "requests~attach" : [deco .serialize ()],
184
+ }
185
+
186
+ errs = InvitationMessageSchema ().validate (obj_x )
187
+ assert errs == {}
188
+
189
+ # no value for both goal and goal_code - good
190
+ obj_x = {
191
+ "label" : "label" ,
192
+ "requests~attach" : [deco .serialize ()],
193
+ "goal_code" : "" ,
194
+ "goal" : "" ,
195
+ }
196
+
197
+ errs = InvitationMessageSchema ().validate (obj_x )
198
+ assert errs == {}
199
+
200
+ errs = InvitationMessageSchema ().validate (obj_x )
201
+ assert errs == {}
202
+
203
+ # populate only goal - bad
204
+ obj_x = {
205
+ "label" : "label" ,
206
+ "requests~attach" : [deco .serialize ()],
207
+ "goal" : "pass test" ,
208
+ }
209
+
210
+ errs = InvitationMessageSchema ().validate (obj_x )
211
+ assert errs and len (errs )
212
+ assert errs and errs ["_schema" ]
213
+ assert len (errs ["_schema" ]) == 1
214
+ assert "goal" in errs ["_schema" ][0 ]
215
+
216
+ # populate only goal_code - bad
217
+ obj_x = {
218
+ "label" : "label" ,
219
+ "requests~attach" : [deco .serialize ()],
220
+ "goal_code" : "pytest.pass" ,
221
+ }
222
+
223
+ errs = InvitationMessageSchema ().validate (obj_x )
224
+ assert errs and len (errs )
225
+ assert errs and errs ["_schema" ]
226
+ assert len (errs ["_schema" ]) == 1
227
+ assert "goal_code" in errs ["_schema" ][0 ]
228
+
229
+ # goal and goal code cannot be set to null/none
230
+ obj_x = {
231
+ "label" : "label" ,
232
+ "requests~attach" : [deco .serialize ()],
233
+ "goal_code" : None ,
234
+ "goal" : None ,
235
+ }
236
+
237
+ errs = InvitationMessageSchema ().validate (obj_x )
238
+ assert len (errs ) == 2
239
+ assert errs ["goal" ]
240
+ assert errs ["goal_code" ]
0 commit comments