Skip to content

Commit 8d63448

Browse files
authored
resolve trigger endpoint vars from environment (#24)
1 parent 9719bbe commit 8d63448

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

engine/actions/trigger/trigger.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package trigger
33
import (
44
"fmt"
55
"net/http"
6+
"os"
67
"strings"
78
"time"
89

@@ -56,7 +57,7 @@ func (a *action) prepareRequest(meta types.Data) *http.Request {
5657
Origin: meta.GetOrigin(),
5758
}
5859
body := processMessage(&a.rule.Body, message)
59-
request, e := http.NewRequest(a.rule.Method, a.rule.Endpoint, body)
60+
request, e := http.NewRequest(a.rule.Method, os.ExpandEnv(a.rule.Endpoint), body)
6061
if e != nil {
6162
a.logger.ErrorWith(log.MetaFields{log.F("issue", meta.GetShortName()), log.E(e)},
6263
"Error trying to build trigger request", e)

engine/actions/trigger/trigger_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package trigger
22

33
import (
44
"net/http"
5+
"os"
56
"testing"
67

78
"github.com/bivas/rivi/mocks"
@@ -119,3 +120,33 @@ func TestTriggerHeaders(t *testing.T) {
119120
action.Apply(state.New(&mocks.MockConfiguration{}, meta))
120121
assert.Nil(t, action.err, "error when sending trigger")
121122
}
123+
124+
func TestEnvironmentEndpoint(t *testing.T) {
125+
httpmock.Activate()
126+
defer httpmock.DeactivateAndReset()
127+
meta := &mocks.MockData{
128+
Number: 1,
129+
Title: "title1",
130+
State: "tested",
131+
Owner: "test",
132+
Repo: "repo1",
133+
Origin: types.Origin{User: "tester"},
134+
}
135+
os.Setenv("MOCK_HOST", "mock")
136+
os.Setenv("MOCK_PORT", "1111")
137+
rule := &rule{
138+
Endpoint: "http://${MOCK_HOST}:${MOCK_PORT}/trigger",
139+
}
140+
rule.Defaults()
141+
httpmock.RegisterResponder(
142+
"POST",
143+
"http://mock:1111/trigger",
144+
func(req *http.Request) (*http.Response, error) {
145+
assert.Equal(t, "trigger", req.Header.Get("X-Rivi-Event"), "missing correct event")
146+
assert.Equal(t, "Rivi-Agent/1.0", req.UserAgent(), "user agent")
147+
return httpmock.NewStringResponse(200, ""), nil
148+
})
149+
action := &action{rule: rule, client: http.DefaultClient, logger: log.Get("trigger.test")}
150+
action.Apply(state.New(&mocks.MockConfiguration{}, meta))
151+
assert.Nil(t, action.err, "error when sending trigger")
152+
}

0 commit comments

Comments
 (0)