@@ -9,23 +9,23 @@ import (
99 "github.com/sirupsen/logrus"
1010)
1111
12- func (ms MocksArray ) DoActions (c Context ) error {
12+ func (ms MocksArray ) DoActions (ctx Context ) error {
1313 for _ , m := range ms {
14- if err := m .DoActions (c ); err != nil {
14+ if err := m .DoActions (ctx ); err != nil {
1515 return nil
1616 }
1717 }
1818 return nil
1919}
2020
21- func (m * Mock ) DoActions (c Context ) error {
22- c .Values = m .Values
23- if ! c .MatchCondition (m .Expect .Condition ) {
21+ func (m * Mock ) DoActions (ctx Context ) error {
22+ ctx .Values = m .Values
23+ if ! ctx .MatchCondition (m .Expect .Condition ) {
2424 return nil
2525 }
2626 for _ , actionDispatcher := range m .Actions {
2727 actualAction := getActualAction (actionDispatcher )
28- if err := actualAction .Perform (c ); err != nil {
28+ if err := actualAction .Perform (ctx ); err != nil {
2929 logrus .WithFields (logrus.Fields {
3030 "err" : err ,
3131 "action" : fmt .Sprintf ("%T" , actualAction ),
@@ -35,13 +35,13 @@ func (m *Mock) DoActions(c Context) error {
3535 return nil
3636}
3737
38- func (a ActionSendHTTP ) Perform (context Context ) error {
39- bodyStr , err := context .Render (a .Body )
38+ func (a ActionSendHTTP ) Perform (ctx Context ) error {
39+ bodyStr , err := ctx .Render (a .Body )
4040 if err != nil {
4141 return err
4242 }
4343
44- urlStr , err := context .Render (a .URL )
44+ urlStr , err := ctx .Render (a .URL )
4545 if err != nil {
4646 return err
4747 }
@@ -50,6 +50,11 @@ func (a ActionSendHTTP) Perform(context Context) error {
5050 SetDebug (true ).
5151 CustomMethod (a .Method , urlStr )
5252
53+ a .Headers , err = renderHeaders (ctx , a .Headers )
54+ if err != nil {
55+ return err
56+ }
57+
5358 for k , v := range a .Headers {
5459 request .Set (k , v )
5560 }
@@ -61,19 +66,25 @@ func (a ActionSendHTTP) Perform(context Context) error {
6166 return nil
6267}
6368
64- func (a ActionReplyHTTP ) Perform (context Context ) error {
65- ec := context .HTTPContext
69+ func (a ActionReplyHTTP ) Perform (ctx Context ) ( err error ) {
70+ ec := ctx .HTTPContext
6671 contentType := echo .MIMEApplicationJSON // default to JSON
6772 if ct , ok := a .Headers [echo .HeaderContentType ]; ok {
6873 contentType = ct
6974 }
75+
76+ a .Headers , err = renderHeaders (ctx , a .Headers )
77+ if err != nil {
78+ return err
79+ }
80+
7081 for k , v := range a .Headers {
7182 ec .Response ().Header ().Set (k , v )
7283 }
7384
74- msg , err := context .Render (a .Body )
85+ msg , err := ctx .Render (a .Body )
7586 if err != nil {
76- logrus .WithField ("err" , err ).Error ("failed to render template for http" )
87+ logrus .WithField ("err" , err ).Error ("failed to render template for http body " )
7788 return err
7889 }
7990
@@ -98,46 +109,59 @@ func (a ActionReplyHTTP) Perform(context Context) error {
98109 return nil
99110}
100111
101- func (a ActionRedis ) Perform (context Context ) error {
112+ func (a ActionRedis ) Perform (ctx Context ) error {
102113 for _ , cmd := range a {
103- _ , err := context .Render (cmd )
114+ _ , err := ctx .Render (cmd )
104115 if err != nil {
105116 return err
106117 }
107118 }
108119 return nil
109120}
110121
111- func (a ActionSleep ) Perform (context Context ) error {
122+ func (a ActionSleep ) Perform (ctx Context ) error {
112123 time .Sleep (a .Duration )
113124 return nil
114125}
115126
116- func (a ActionPublishKafka ) Perform (context Context ) error {
127+ func (a ActionPublishKafka ) Perform (ctx Context ) error {
117128 msg := a .Payload
118- msg , err := context .Render (msg )
129+ msg , err := ctx .Render (msg )
119130 if err != nil {
120131 logrus .WithField ("err" , err ).Error ("failed to render template for kafka payload" )
121132 return err
122133 }
123- err = context .om .kafkaClient .sendMessage (a .Topic , []byte (msg ))
134+ err = ctx .om .kafkaClient .sendMessage (a .Topic , []byte (msg ))
124135 if err != nil {
125136 logrus .WithField ("err" , err ).Error ("failed to publish to kafka" )
126137 }
127138 return err
128139}
129140
130- func (a ActionPublishAMQP ) Perform (context Context ) error {
131- msg , err := context .Render (a .Payload )
141+ func (a ActionPublishAMQP ) Perform (ctx Context ) error {
142+ msg , err := ctx .Render (a .Payload )
132143 if err != nil {
133144 logrus .WithField ("err" , err ).Error ("failed to render template for amqp" )
134145 return err
135146 }
136147 publishToAMQP (
137- context .om .AMQPURL ,
148+ ctx .om .AMQPURL ,
138149 a .Exchange ,
139150 a .RoutingKey ,
140151 msg ,
141152 )
142153 return nil
143154}
155+
156+ func renderHeaders (ctx Context , headers map [string ]string ) (map [string ]string , error ) {
157+ ret := make (map [string ]string )
158+ for k , v := range headers {
159+ msg , err := ctx .Render (v )
160+ if err != nil {
161+ logrus .WithField ("err" , err ).Error ("failed to render template for http headers" )
162+ return nil , err
163+ }
164+ ret [k ] = msg
165+ }
166+ return ret , nil
167+ }
0 commit comments