@@ -137,6 +137,36 @@ func TestNewEvent(t *testing.T) {
137137 assert .Equal (t , testProto .Message , resultProto .Message )
138138}
139139
140+ func TestNewEvent_IdempotencyKey (t * testing.T ) {
141+ payload := []byte ("body" )
142+
143+ t .Run ("non-empty key is set as extension" , func (t * testing.T ) {
144+ attrs := map [string ]any {IdempotencyKeyAttr : "my-key-123" }
145+ event , err := NewEvent ("domain" , "entity" , payload , attrs )
146+ require .NoError (t , err )
147+ ext := event .Extensions ()
148+ require .NotNil (t , ext )
149+ assert .Equal (t , "my-key-123" , ext [IdempotencyKeyAttr ])
150+ })
151+
152+ t .Run ("empty key is not set as extension" , func (t * testing.T ) {
153+ attrs := map [string ]any {IdempotencyKeyAttr : "" }
154+ event , err := NewEvent ("domain" , "entity" , payload , attrs )
155+ require .NoError (t , err )
156+ ext := event .Extensions ()
157+ _ , present := ext [IdempotencyKeyAttr ]
158+ assert .False (t , present , "empty idempotency key must not appear as an extension" )
159+ })
160+
161+ t .Run ("absent key leaves extension unset" , func (t * testing.T ) {
162+ event , err := NewEvent ("domain" , "entity" , payload , nil )
163+ require .NoError (t , err )
164+ ext := event .Extensions ()
165+ _ , present := ext [IdempotencyKeyAttr ]
166+ assert .False (t , present , "absent idempotency key must not appear as an extension" )
167+ })
168+ }
169+
140170func TestEventToProto (t * testing.T ) {
141171 // Create a test protobuf message
142172 testProto := pb.PingResponse {Message : "test message" }
0 commit comments