@@ -897,6 +897,58 @@ async def test_node_create_with_object_template(
897897 )
898898
899899
900+ async def test_node_create_user_timestamp_metadata (
901+ db : InfrahubDatabase , default_branch : Branch , criticality_schema
902+ ) -> None :
903+ # Assume test user id for created_by
904+ test_user_id = "user-123"
905+
906+ # Create object on default branch
907+ obj = await Node .init (db = db , schema = criticality_schema )
908+ await obj .new (db = db , name = "low" , level = 2 )
909+ before_create_default = Timestamp ()
910+ await obj .save (db = db , user_id = test_user_id )
911+ after_create_default = Timestamp ()
912+
913+ # validate created object on default branch
914+ assert before_create_default < obj .get_created_at () < after_create_default
915+ assert obj .get_created_by () == test_user_id
916+ assert obj .get_updated_at () == obj .get_created_at ()
917+ assert obj .get_updated_by () == test_user_id
918+
919+ # Retrieve node and validate metadata
920+ retrieved_obj = await NodeManager .get_one (db = db , id = obj .id , include_metadata = MetadataOptions .USER_TIMESTAMPS )
921+ assert retrieved_obj .get_created_at () == obj .get_created_at ()
922+ assert retrieved_obj .get_created_by () == obj .get_created_by ()
923+ assert retrieved_obj .get_updated_at () == obj .get_updated_at ()
924+ assert retrieved_obj .get_updated_by () == obj .get_updated_by ()
925+
926+ # Create a branch and create another object on the branch
927+ branch1 = await create_branch (branch_name = "branch1" , db = db )
928+ branch_user_id = "user-456"
929+
930+ obj_branch = await Node .init (db = db , schema = criticality_schema , branch = branch1 )
931+ await obj_branch .new (db = db , name = "medium" , level = 3 )
932+ before_create_branch = Timestamp ()
933+ await obj_branch .save (db = db , user_id = branch_user_id )
934+ after_create_branch = Timestamp ()
935+
936+ # Validate created object on branch
937+ assert before_create_branch < obj_branch .get_created_at () < after_create_branch
938+ assert obj_branch .get_created_by () == branch_user_id
939+ assert obj_branch .get_updated_at () == obj_branch .get_created_at ()
940+ assert obj_branch .get_updated_by () == branch_user_id
941+
942+ # Retrieve node from branch and validate metadata
943+ retrieved_obj_branch = await NodeManager .get_one (
944+ db = db , id = obj_branch .id , branch = branch1 , include_metadata = MetadataOptions .USER_TIMESTAMPS
945+ )
946+ assert retrieved_obj_branch .get_created_at () == obj_branch .get_created_at ()
947+ assert retrieved_obj_branch .get_created_by () == obj_branch .get_created_by ()
948+ assert retrieved_obj_branch .get_updated_at () == obj_branch .get_updated_at ()
949+ assert retrieved_obj_branch .get_updated_by () == obj_branch .get_updated_by ()
950+
951+
900952# --------------------------------------------------------------------------
901953# Update
902954# --------------------------------------------------------------------------
0 commit comments