@@ -576,5 +576,44 @@ def test_pod_log_empty_lines(self):
576
576
self .api .delete_namespaced_pod (name = pod_name , namespace = self .namespace )
577
577
self .api .delete_namespaced_pod .assert_called_once_with (name = pod_name , namespace = self .namespace )
578
578
579
+ if __name__ == '__main__' :
580
+ def test_watch_with_deserialize_param (self ):
581
+ """test watch.stream() deserialize param"""
582
+ # prepare test data
583
+ test_json = '{"type": "ADDED", "object": {"metadata": {"name": "test1", "resourceVersion": "1"}, "spec": {}, "status": {}}}'
584
+ fake_resp = Mock ()
585
+ fake_resp .close = Mock ()
586
+ fake_resp .release_conn = Mock ()
587
+ fake_resp .stream = Mock (return_value = [test_json + '\n ' ])
588
+
589
+ fake_api = Mock ()
590
+ fake_api .get_namespaces = Mock (return_value = fake_resp )
591
+ fake_api .get_namespaces .__doc__ = ':return: V1NamespaceList'
592
+
593
+ # test case with deserialize=True
594
+ w = Watch ()
595
+ for e in w .stream (fake_api .get_namespaces , deserialize = True ):
596
+ self .assertEqual ("ADDED" , e ['type' ])
597
+ # Verify that the object is deserialized correctly
598
+ self .assertTrue (hasattr (e ['object' ], 'metadata' ))
599
+ self .assertEqual ("test1" , e ['object' ].metadata .name )
600
+ self .assertEqual ("1" , e ['object' ].metadata .resource_version )
601
+ # Verify that the original object is saved
602
+ self .assertEqual (json .loads (test_json )['object' ], e ['raw_object' ])
603
+
604
+ # test case with deserialize=False
605
+ w = Watch ()
606
+ for e in w .stream (fake_api .get_namespaces , deserialize = False ):
607
+ self .assertEqual ("ADDED" , e ['type' ])
608
+ # The validation object remains in the original dictionary format
609
+ self .assertIsInstance (e ['object' ], dict )
610
+ self .assertEqual ("test1" , e ['object' ]['metadata' ]['name' ])
611
+ self .assertEqual ("1" , e ['object' ]['metadata' ]['resourceVersion' ])
612
+
613
+ # verify the api is called twice
614
+ fake_api .get_namespaces .assert_has_calls ([
615
+ call (_preload_content = False , watch = True ),
616
+ call (_preload_content = False , watch = True )
617
+ ])
579
618
if __name__ == '__main__' :
580
619
unittest .main ()
0 commit comments