Skip to content

Commit

Permalink
More test #123
Browse files Browse the repository at this point in the history
  • Loading branch information
tomasbjerre committed Jun 28, 2019
1 parent 13bce9c commit 6c6055d
Show file tree
Hide file tree
Showing 3 changed files with 124 additions and 6 deletions.
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Generic Webhook Plugin Changelog
Changelog of Generic Webhook Plugin.
## Unreleased
### GitHub [#122](https://github.com/jenkinsci/generic-webhook-trigger-plugin/issues/122) RegExFilterText Not Evaluating Variable? *question*

**Testing exact matching of single variable #122**


[13bce9c546f3c92](https://github.com/jenkinsci/generic-webhook-trigger-plugin/commit/13bce9c546f3c92) Tomas Bjerre *2019-06-19 19:03:38*


## 1.54 (2019-05-06 13:29:39)
### GitHub [#115](https://github.com/jenkinsci/generic-webhook-trigger-plugin/issues/115) Blank parameter trigger the job even if you specified a filter

Expand Down
20 changes: 14 additions & 6 deletions src/test/java/org/jenkinsci/plugins/gwt/bdd/Stepdefs.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ public void givenGenericVariables(final List<GenericVariablePojo> given) {
}

@Given("^variable ([a-z]+?) has regexpFilter: (.*)$")
public void givenGenericVariables(String variable, String regexpFilter) {
for (GenericVariable gv : featureState.getGenericVariables()) {
public void givenGenericVariables(final String variable, final String regexpFilter) {
for (final GenericVariable gv : featureState.getGenericVariables()) {
if (gv.getVariableName().equals(variable)) {
gv.setRegexpFilter(regexpFilter);
}
Expand Down Expand Up @@ -86,7 +86,7 @@ public void variablesAreResolved(final List<GenericVariablesResolvedPojo> given)
}

@Then("^variable ([a-z]+?) is resolved to:$")
public void variableIsResolvedTo(String variable, String expected) {
public void variableIsResolvedTo(final String variable, final String expected) {
assertThat(getResolvedVariables().get(variable)) //
.as(variable) //
.isEqualTo(expected);
Expand All @@ -102,11 +102,15 @@ public void jobShouldNotBeTriggered() {
isMatching(false);
}

private boolean isMatching(boolean expected) {
@Then("^filter text is rendered to: (.*)$")
public void filterTextIsRenderedTo(final String given) {
assertThat(renderedText(getResolvedVariables())).isEqualTo(given);
}

private boolean isMatching(final boolean expected) {
final Map<String, String> resolvedVariables = getResolvedVariables();

final String renderedRegexpFilterText =
renderText(featureState.getRegexpFilterText(), resolvedVariables);
final String renderedRegexpFilterText = renderedText(resolvedVariables);
final boolean isMatching =
Renderer.isMatching(renderedRegexpFilterText, featureState.getRegexpFilterExpression());
if (!isMatching && expected || isMatching && !expected) {
Expand All @@ -120,6 +124,10 @@ private boolean isMatching(boolean expected) {
return isMatching;
}

private String renderedText(final Map<String, String> resolvedVariables) {
return renderText(featureState.getRegexpFilterText(), resolvedVariables);
}

private Map<String, String> getResolvedVariables() {
final Map<String, String> resolvedVariables =
new VariablesResolver(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
Feature: It should be possible to trigger for Bitbucket Server tag events.

Scenario: Trigger a job when a tag is created.

Given the following generic variables are configured:
| variable | expression | expressionType | defaultValue | regexpFilter |
| refsb | $.changes[0].ref.id | JSONPath | | ^(refs/heads/\|refs/remotes/origin/) |
| refsbc | $.pullRequest.toRef.id | JSONPath | | ^(refs/heads/\|refs/remotes/origin/) |

Given filter is configured with text: $refsb$refsbc
Given filter is configured with expression: ^(test)*?$


When received post content is:
"""
{
"eventKey": "repo:refs_changed",
"date": "2019-06-28T11:05:24+0000",
"actor": {
"name": "xxxxxxx",
"emailAddress": "xxxxxxxxxxxxxxxxxx",
"id": 563,
"displayName": "xxxxxxxxxxxxxxxxx",
"active": true,
"slug": "xxxxxxx",
"type": "NORMAL",
"links": {
"self": [
{
"href": "https:\/\/xxxxxxxxxxxxxxxxxxxxxx"
}
]
}
},
"repository": {
"slug": "xxxxx-xxxx",
"id": 80,
"name": "xxx-xxxxx",
"scmId": "git",
"state": "AVAILABLE",
"statusMessage": "Available",
"forkable": true,
"project": {
"key": "xxx",
"id": 128,
"name": "xxxx",
"description": "A Bitbucket t.",
"public": false,
"type": "NORMAL",
"links": {
"self": [
{
"href": "https:\/\/xxxxxxxxxxxxxx"
}
]
}
},
"public": false,
"links": {
"clone": [
{
"href": "xxxxxxxxxxxxxxxxxx",
"name": "http"
},
{
"href": "xxxxxxxxxxxxxxxxxx",
"name": "ssh"
}
],
"self": [
{
"href": "xxxxxxxxxxx"
}
]
}
},
"changes": [
{
"ref": {
"id": "refs\/heads\/test",
"displayId": "test",
"type": "BRANCH"
},
"refId": "refs\/heads\/test",
"fromHash": "xxxxxxxxxxxxxx",
"toHash": "xxxxxxxxxxxxxxxxx",
"type": "UPDATE"
}
]
}
"""

Then the job is triggered

Then filter text is rendered to: test

Then variables are resolved to:
| variable | value |
| refsb | test |
| refsbc | |

0 comments on commit 6c6055d

Please sign in to comment.