@@ -576,5 +576,44 @@ def test_pod_log_empty_lines(self):
576576 self .api .delete_namespaced_pod (name = pod_name , namespace = self .namespace )
577577 self .api .delete_namespaced_pod .assert_called_once_with (name = pod_name , namespace = self .namespace )
578578
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+ ])
579618if __name__ == '__main__' :
580619 unittest .main ()
0 commit comments