mirror of
https://github.com/Threnklyn/jira.git
synced 2026-06-01 18:58:26 +02:00
Compare commits
35 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ba08d51437 | |||
| 09d718b5d8 | |||
| e3e84d7aa0 | |||
| a4f1d754e4 | |||
| 683541de1e | |||
| e0fd6bab66 | |||
| 5ca096ab6e | |||
| ac515e2743 | |||
| be4a5f9156 | |||
| 7f10eaa667 | |||
| b326623ed2 | |||
| 72c78c6c1c | |||
| 5df5a39405 | |||
| bd54ecc4f6 | |||
| 073e0bdcce | |||
| 1347ebe6b6 | |||
| c7565b08a1 | |||
| 01067e859c | |||
| 8b174625d9 | |||
| 8acc177627 | |||
| 8d9db0e399 | |||
| 998e4601c0 | |||
| 2df70edd00 | |||
| f73b3a5dc8 | |||
| e74c94b030 | |||
| c18d2140e4 | |||
| 2b56833c1c | |||
| fe69ad1cec | |||
| 3b18a1863c | |||
| d6d6578b11 | |||
| 2b433dda40 | |||
| 08a24e7dc3 | |||
| a746ddc6fb | |||
| e254435734 | |||
| 14298bfa52 |
@@ -12,3 +12,4 @@ t/issue.props
|
|||||||
t/.jira.d/templates
|
t/.jira.d/templates
|
||||||
dist/
|
dist/
|
||||||
src/
|
src/
|
||||||
|
t/.maven-cache
|
||||||
+14
-5
@@ -1,12 +1,21 @@
|
|||||||
|
sudo: true
|
||||||
|
before_install:
|
||||||
|
- sudo apt-get update && sudo apt-get install -y libgnome-keyring-dev
|
||||||
|
|
||||||
language: go
|
language: go
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- 1.6
|
- 1.6
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- make vet
|
- make vet
|
||||||
- make lint
|
- make lint
|
||||||
- make
|
- make
|
||||||
|
- JIRACLOUD=1 ./t/100basic.t -w -a 2>&1
|
||||||
|
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- t/.maven-cache
|
||||||
|
|||||||
@@ -1,5 +1,21 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.1.9 - 2016-12-18
|
||||||
|
|
||||||
|
* only warn about needing login when not already running the login command [Cory Bennett] [[6c24e55](https://github.com/Netflix-Skunkworks/go-jira/commit/6c24e55)]
|
||||||
|
* fix(http): Add proxy transport [William Hearn] [[4bd740b](https://github.com/Netflix-Skunkworks/go-jira/commit/4bd740b)]
|
||||||
|
* fix(http): Add proxy transport [William Hearn] [[2dff6c9](https://github.com/Netflix-Skunkworks/go-jira/commit/2dff6c9)]
|
||||||
|
|
||||||
|
## 0.1.8 - 2016-11-24
|
||||||
|
|
||||||
|
* [[#12](https://github.com/Netflix-Skunkworks/go-jira/issues/12)] integrate with keyring for password storage and provide http basic auth credentials for every request since most jira services have websudo enabled with does not allow cookie based authentication [Cory Bennett] [[b8a6e57](https://github.com/Netflix-Skunkworks/go-jira/commit/b8a6e57)]
|
||||||
|
* Cleaning up usage [Jay Shirley] [[8add52b](https://github.com/Netflix-Skunkworks/go-jira/commit/8add52b)]
|
||||||
|
* Update usage [Jay Shirley] [[b56e32a](https://github.com/Netflix-Skunkworks/go-jira/commit/b56e32a)]
|
||||||
|
* use gopkg.in for links to maintain version compatibility [Cory Bennett] [[1414d1f](https://github.com/Netflix-Skunkworks/go-jira/commit/1414d1f)]
|
||||||
|
* golint [Cory Bennett] [[44cdebf](https://github.com/Netflix-Skunkworks/go-jira/commit/44cdebf)]
|
||||||
|
* add "rank" command allow ordering backlog issues in agile projects [Cory Bennett] [[e4cc9c6](https://github.com/Netflix-Skunkworks/go-jira/commit/e4cc9c6)]
|
||||||
|
* Adding a unixproxy mechanism [Jay Shirley] [[5b9c0dd](https://github.com/Netflix-Skunkworks/go-jira/commit/5b9c0dd)]
|
||||||
|
|
||||||
## 0.1.7 - 2016-08-24
|
## 0.1.7 - 2016-08-24
|
||||||
|
|
||||||
* Prefer transition names which match exactly [Don Brower] [[e40f9c1](https://github.com/Netflix-Skunkworks/go-jira/commit/e40f9c1)]
|
* Prefer transition names which match exactly [Don Brower] [[e40f9c1](https://github.com/Netflix-Skunkworks/go-jira/commit/e40f9c1)]
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
PLATFORMS= \
|
PLATFORMS= \
|
||||||
freebsd-amd64 \
|
freebsd/amd64 \
|
||||||
linux-386 \
|
linux/386 \
|
||||||
linux-amd64 \
|
linux/amd64 \
|
||||||
windows-386 \
|
windows/386 \
|
||||||
windows-amd64 \
|
windows/amd64 \
|
||||||
darwin-amd64 \
|
darwin/amd64 \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
# freebsd-386 \
|
# freebsd-386 \
|
||||||
@@ -45,7 +45,7 @@ else
|
|||||||
GOBUILD=go build -v -ldflags "$(LDFLAGS) -s"
|
GOBUILD=go build -v -ldflags "$(LDFLAGS) -s"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
build: src/github.com/Netflix-Skunkworks/go-jira
|
build: src/gopkg.in/Netflix-Skunkworks/go-jira.v0
|
||||||
$(GOBUILD) -o '$(BIN)' main/main.go
|
$(GOBUILD) -o '$(BIN)' main/main.go
|
||||||
|
|
||||||
debug:
|
debug:
|
||||||
@@ -53,7 +53,7 @@ debug:
|
|||||||
|
|
||||||
src/%:
|
src/%:
|
||||||
mkdir -p $(@D)
|
mkdir -p $(@D)
|
||||||
test -L $@ || ln -sf '$(GOPATH)' $@
|
test -L $@ || ln -sf '../../..' $@
|
||||||
go get -v $* $*/main
|
go get -v $* $*/main
|
||||||
|
|
||||||
vet:
|
vet:
|
||||||
@@ -73,14 +73,21 @@ cross-setup:
|
|||||||
cd $(GOROOT)/src && sudo GOROOT_BOOTSTRAP=$(GOROOT) GOOS=$${p/-*/} GOARCH=$${p/*-/} bash ./make.bash --no-clean; \
|
cd $(GOROOT)/src && sudo GOROOT_BOOTSTRAP=$(GOROOT) GOOS=$${p/-*/} GOARCH=$${p/*-/} bash ./make.bash --no-clean; \
|
||||||
done
|
done
|
||||||
|
|
||||||
all:
|
all: src/gopkg.in/Netflix-Skunkworks/go-jira.v0
|
||||||
rm -rf $(DIST); \
|
docker pull karalabe/xgo-latest
|
||||||
mkdir -p $(DIST); \
|
rm -rf dist
|
||||||
for p in $(PLATFORMS); do \
|
mkdir -p dist
|
||||||
echo "Building for $$p"; \
|
docker run --rm -e EXT_GOPATH=/gopath -v $$(pwd):/gopath -e TARGETS="$(PLATFORMS)" -v $$(pwd)/dist:/build karalabe/xgo-latest gopkg.in/Netflix-Skunkworks/go-jira.v0/main
|
||||||
${MAKE} build GOOS=$${p/-*/} GOARCH=$${p/*-/} BIN=$(DIST)/$(NAME)-$$p; \
|
cd $(DIST) && for x in main-*; do mv $$x jira-$$(echo $$x | cut -c 6-); done
|
||||||
done
|
|
||||||
for x in $(DIST)/jira-windows-*; do mv $$x $$x.exe; done
|
# all:
|
||||||
|
# rm -rf $(DIST); \
|
||||||
|
# mkdir -p $(DIST); \
|
||||||
|
# for p in $(PLATFORMS); do \
|
||||||
|
# echo "Building for $$p"; \
|
||||||
|
# ${MAKE} build GOOS=$${p/-*/} GOARCH=$${p/*-/} BIN=$(DIST)/$(NAME)-$$p; \
|
||||||
|
# done
|
||||||
|
# for x in $(DIST)/jira-windows-*; do mv $$x $$x.exe; done
|
||||||
|
|
||||||
fmt:
|
fmt:
|
||||||
gofmt -s -w main/*.go *.go
|
gofmt -s -w main/*.go *.go
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ jira trans close GOJIRA-321 -o resolution="Won't Fix" --noedit
|
|||||||
# same as above
|
# same as above
|
||||||
jira close GOJIRA-321 -o resolution="Won't Fix"
|
jira close GOJIRA-321 -o resolution="Won't Fix"
|
||||||
|
|
||||||
jira repopen GOJIRA-321 -m "reopening" # reopen issue
|
jira reopen GOJIRA-321 -m "reopening" # reopen issue
|
||||||
|
|
||||||
jira watch GOJIRA-321 # add self as watcher to the issue
|
jira watch GOJIRA-321 # add self as watcher to the issue
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,6 @@ import (
|
|||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/kballard/go-shellquote"
|
|
||||||
"gopkg.in/coryb/yaml.v2"
|
|
||||||
"gopkg.in/op/go-logging.v1"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/cookiejar"
|
"net/http/cookiejar"
|
||||||
@@ -20,6 +17,11 @@ import (
|
|||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/kballard/go-shellquote"
|
||||||
|
"github.com/tmc/keyring"
|
||||||
|
"gopkg.in/coryb/yaml.v2"
|
||||||
|
"gopkg.in/op/go-logging.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -43,26 +45,36 @@ func New(opts map[string]interface{}) *Cli {
|
|||||||
endpoint, _ := opts["endpoint"].(string)
|
endpoint, _ := opts["endpoint"].(string)
|
||||||
url, _ := url.Parse(strings.TrimRight(endpoint, "/"))
|
url, _ := url.Parse(strings.TrimRight(endpoint, "/"))
|
||||||
|
|
||||||
transport := &http.Transport{
|
|
||||||
TLSClientConfig: &tls.Config{},
|
|
||||||
}
|
|
||||||
|
|
||||||
if project, ok := opts["project"].(string); ok {
|
if project, ok := opts["project"].(string); ok {
|
||||||
opts["project"] = strings.ToUpper(project)
|
opts["project"] = strings.ToUpper(project)
|
||||||
}
|
}
|
||||||
|
|
||||||
if insecureSkipVerify, ok := opts["insecure"].(bool); ok {
|
var ua *http.Client
|
||||||
transport.TLSClientConfig.InsecureSkipVerify = insecureSkipVerify
|
if unixProxyPath, ok := opts["unixproxy"].(string); ok {
|
||||||
|
ua = &http.Client{
|
||||||
|
Jar: cookieJar,
|
||||||
|
Transport: UnixProxy(unixProxyPath),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
transport := &http.Transport{
|
||||||
|
Proxy: http.ProxyFromEnvironment,
|
||||||
|
TLSClientConfig: &tls.Config{},
|
||||||
|
}
|
||||||
|
if insecureSkipVerify, ok := opts["insecure"].(bool); ok {
|
||||||
|
transport.TLSClientConfig.InsecureSkipVerify = insecureSkipVerify
|
||||||
|
}
|
||||||
|
|
||||||
|
ua = &http.Client{
|
||||||
|
Jar: cookieJar,
|
||||||
|
Transport: transport,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cli := &Cli{
|
cli := &Cli{
|
||||||
endpoint: url,
|
endpoint: url,
|
||||||
opts: opts,
|
opts: opts,
|
||||||
cookieFile: filepath.Join(homedir, ".jira.d", "cookies.js"),
|
cookieFile: filepath.Join(homedir, ".jira.d", "cookies.js"),
|
||||||
ua: &http.Client{
|
ua: ua,
|
||||||
Jar: cookieJar,
|
|
||||||
Transport: transport,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cli.ua.Jar.SetCookies(url, cli.loadCookies())
|
cli.ua.Jar.SetCookies(url, cli.loadCookies())
|
||||||
@@ -203,6 +215,16 @@ func (c *Cli) makeRequest(req *http.Request) (resp *http.Response, err error) {
|
|||||||
req.Header.Set("Accept", "application/json")
|
req.Header.Set("Accept", "application/json")
|
||||||
req.Header.Set("Content-Type", "application/json")
|
req.Header.Set("Content-Type", "application/json")
|
||||||
|
|
||||||
|
if val, ok := c.opts["password-keyring"].(bool); ok && val && !strings.HasSuffix(req.URL.Path, "/rest/auth/1/session") {
|
||||||
|
user, _ := c.opts["user"].(string)
|
||||||
|
password, _ := keyring.Get("go-jira", user)
|
||||||
|
if password == "" {
|
||||||
|
log.Warning("No password for user %s in keyring, please run the 'login' command first", user)
|
||||||
|
} else {
|
||||||
|
req.SetBasicAuth(user, password)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// this is actually done in http.send but doing it
|
// this is actually done in http.send but doing it
|
||||||
// here so we can log it in DumpRequest for debugging
|
// here so we can log it in DumpRequest for debugging
|
||||||
for _, cookie := range c.ua.Jar.Cookies(req.URL) {
|
for _, cookie := range c.ua.Jar.Cookies(req.URL) {
|
||||||
@@ -538,6 +560,55 @@ func (c *Cli) FindIssues() (interface{}, error) {
|
|||||||
return data, nil
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RankOrder type used to specify before/after ranking arguments to RankIssue
|
||||||
|
type RankOrder int
|
||||||
|
|
||||||
|
const (
|
||||||
|
// RANKBEFORE should be used to rank issue before the target issue
|
||||||
|
RANKBEFORE RankOrder = iota
|
||||||
|
// RANKAFTER should be used to rank issue after the target issue
|
||||||
|
RANKAFTER RankOrder = iota
|
||||||
|
)
|
||||||
|
|
||||||
|
// RankIssue will modify issue to have rank before or after the target issue
|
||||||
|
func (c *Cli) RankIssue(issue, target string, order RankOrder) error {
|
||||||
|
type RankRequest struct {
|
||||||
|
Issues []string `json:"issues"`
|
||||||
|
Before string `json:"rankBeforeIssue,omitempty"`
|
||||||
|
After string `json:"rankAfterIssue,omitempty"`
|
||||||
|
}
|
||||||
|
req := &RankRequest{
|
||||||
|
Issues: []string{
|
||||||
|
issue,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if order == RANKBEFORE {
|
||||||
|
req.Before = target
|
||||||
|
} else {
|
||||||
|
req.After = target
|
||||||
|
}
|
||||||
|
|
||||||
|
json, err := jsonEncode(req)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
uri := fmt.Sprintf("%s/rest/agile/1.0/issue/rank", c.endpoint)
|
||||||
|
if c.getOptBool("dryrun", false) {
|
||||||
|
log.Debugf("PUT: %s", json)
|
||||||
|
log.Debugf("Dryrun mode, skipping PUT")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
resp, err := c.put(uri, json)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if resp.StatusCode != 204 {
|
||||||
|
return fmt.Errorf("failed to modify issue rank: %s", resp.Status)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// GetOptString will extract the string from the Cli object options
|
// GetOptString will extract the string from the Cli object options
|
||||||
// otherwise return the provided default
|
// otherwise return the provided default
|
||||||
func (c *Cli) GetOptString(optName string, dflt string) string {
|
func (c *Cli) GetOptString(optName string, dflt string) string {
|
||||||
|
|||||||
+37
-3
@@ -4,13 +4,15 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/Netflix-Skunkworks/go-jira/data"
|
|
||||||
"github.com/howeyc/gopass"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/howeyc/gopass"
|
||||||
|
"github.com/tmc/keyring"
|
||||||
|
"gopkg.in/Netflix-Skunkworks/go-jira.v0/data"
|
||||||
// "github.com/kr/pretty"
|
// "github.com/kr/pretty"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -53,6 +55,14 @@ func (c *Cli) CmdLogin() error {
|
|||||||
log.Warning("Authentication Failed: %s", reason)
|
log.Warning("Authentication Failed: %s", reason)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if val, ok := c.opts["password-keyring"].(bool); ok && val {
|
||||||
|
// save password in keychain so that it can be used for subsequent http requests
|
||||||
|
err := keyring.Set("go-jira", user, passwd)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("Failed to set password in keyring: %s", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
log.Warning("Login failed")
|
log.Warning("Login failed")
|
||||||
@@ -135,7 +145,7 @@ func (c *Cli) CmdWorklog(action string, issue string) error {
|
|||||||
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/worklog", c.endpoint, issue)
|
uri := fmt.Sprintf("%s/rest/api/2/issue/%s/worklog", c.endpoint, issue)
|
||||||
|
|
||||||
worklogData := map[string]interface{}{
|
worklogData := map[string]interface{}{
|
||||||
"issue": issue,
|
"issue": issue,
|
||||||
"comment": c.opts["comment"],
|
"comment": c.opts["comment"],
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -645,6 +655,30 @@ func (c *Cli) CmdVote(issue string, up bool) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CmdRankAfter rank issue after target issue
|
||||||
|
func (c *Cli) CmdRankAfter(issue, after string) error {
|
||||||
|
err := c.RankIssue(issue, after, RANKAFTER)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if !c.opts["quiet"].(bool) {
|
||||||
|
fmt.Printf("OK %s %s/browse/%s\n", issue, c.endpoint, issue)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CmdRankBefore rank issue before target issue
|
||||||
|
func (c *Cli) CmdRankBefore(issue, before string) error {
|
||||||
|
err := c.RankIssue(issue, before, RANKBEFORE)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if !c.opts["quiet"].(bool) {
|
||||||
|
fmt.Printf("OK %s %s/browse/%s\n", issue, c.endpoint, issue)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// CmdTransition will move state of the given issue to the given transtion
|
// CmdTransition will move state of the given issue to the given transtion
|
||||||
func (c *Cli) CmdTransition(issue string, trans string) error {
|
func (c *Cli) CmdTransition(issue string, trans string) error {
|
||||||
log.Debugf("transition called")
|
log.Debugf("transition called")
|
||||||
|
|||||||
+12
-1
@@ -3,7 +3,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/Netflix-Skunkworks/go-jira"
|
"gopkg.in/Netflix-Skunkworks/go-jira.v0"
|
||||||
"github.com/coryb/optigo"
|
"github.com/coryb/optigo"
|
||||||
"gopkg.in/coryb/yaml.v2"
|
"gopkg.in/coryb/yaml.v2"
|
||||||
"gopkg.in/op/go-logging.v1"
|
"gopkg.in/op/go-logging.v1"
|
||||||
@@ -63,6 +63,7 @@ Usage:
|
|||||||
jira DUPLICATE dups ISSUE
|
jira DUPLICATE dups ISSUE
|
||||||
jira BLOCKER blocks ISSUE
|
jira BLOCKER blocks ISSUE
|
||||||
jira vote ISSUE [--down]
|
jira vote ISSUE [--down]
|
||||||
|
jira rank ISSUE (after|before) ISSUE
|
||||||
jira watch ISSUE [-w WATCHER] [--remove]
|
jira watch ISSUE [-w WATCHER] [--remove]
|
||||||
jira (trans|transition) TRANSITION ISSUE [--noedit] <Edit Options>
|
jira (trans|transition) TRANSITION ISSUE [--noedit] <Edit Options>
|
||||||
jira ack ISSUE [--edit] <Edit Options>
|
jira ack ISSUE [--edit] <Edit Options>
|
||||||
@@ -103,6 +104,7 @@ General Options:
|
|||||||
-t --template=FILE Template file to use for output/editing
|
-t --template=FILE Template file to use for output/editing
|
||||||
-u --user=USER Username to use for authenticaion (default: %s)
|
-u --user=USER Username to use for authenticaion (default: %s)
|
||||||
-v --verbose Increase output logging
|
-v --verbose Increase output logging
|
||||||
|
--unixproxy=PATH Path for a unix-socket proxy (eg., --unixproxy /tmp/proxy.sock)
|
||||||
--version Print version
|
--version Print version
|
||||||
|
|
||||||
Query Options:
|
Query Options:
|
||||||
@@ -183,6 +185,7 @@ Command Options:
|
|||||||
"req": "request",
|
"req": "request",
|
||||||
"request": "request",
|
"request": "request",
|
||||||
"vote": "vote",
|
"vote": "vote",
|
||||||
|
"rank": "rank",
|
||||||
"worklog": "worklog",
|
"worklog": "worklog",
|
||||||
"addworklog": "addworklog",
|
"addworklog": "addworklog",
|
||||||
}
|
}
|
||||||
@@ -239,6 +242,7 @@ Command Options:
|
|||||||
"S|saveFile=s": setopt,
|
"S|saveFile=s": setopt,
|
||||||
"T|time-spent=s": setopt,
|
"T|time-spent=s": setopt,
|
||||||
"Q|quiet": setopt,
|
"Q|quiet": setopt,
|
||||||
|
"unixproxy": setopt,
|
||||||
"down": setopt,
|
"down": setopt,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -507,6 +511,13 @@ Command Options:
|
|||||||
} else {
|
} else {
|
||||||
err = c.CmdVote(args[0], true)
|
err = c.CmdVote(args[0], true)
|
||||||
}
|
}
|
||||||
|
case "rank":
|
||||||
|
requireArgs(3)
|
||||||
|
if args[1] == "after" {
|
||||||
|
err = c.CmdRankAfter(args[0], args[2])
|
||||||
|
} else {
|
||||||
|
err = c.CmdRankBefore(args[0], args[2])
|
||||||
|
}
|
||||||
case "request":
|
case "request":
|
||||||
requireArgs(1)
|
requireArgs(1)
|
||||||
data := ""
|
data := ""
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
!src/
|
||||||
Regular → Executable
+9
-2
@@ -1,2 +1,9 @@
|
|||||||
endpoint: http://localhost:8080
|
#!/bin/sh
|
||||||
user: gojira
|
if [ -z "$JIRACLOUD" ]; then
|
||||||
|
echo endpoint: http://localhost:8080
|
||||||
|
echo user: gojira
|
||||||
|
echo password-keyring: true
|
||||||
|
else
|
||||||
|
echo endpoint: https://go-jira.atlassian.net
|
||||||
|
echo user: gojira@example.com
|
||||||
|
fi
|
||||||
|
|||||||
+19
-11
@@ -3,28 +3,36 @@ eval "$(curl -q -s https://raw.githubusercontent.com/coryb/osht/master/osht.sh)"
|
|||||||
cd $(dirname $0)
|
cd $(dirname $0)
|
||||||
jira="../jira --user admin"
|
jira="../jira --user admin"
|
||||||
|
|
||||||
PLAN 14
|
SKIP test -n "$JIRACLOUD" # using Jira Cloud at go-jira.atlassian.net
|
||||||
|
PLAN 15
|
||||||
|
|
||||||
# clean out any old containers
|
# clean out any old containers
|
||||||
docker rm -f go-jira-test
|
docker rm -f go-jira-test
|
||||||
|
|
||||||
# start newt jira service
|
RUNS docker build . -t go-jira-test
|
||||||
RUNS docker run --detach --name go-jira-test --publish 8080:8080 go-jira-test:latest
|
|
||||||
|
|
||||||
# wait a few seconds for it to bind to port 8080
|
mkdir -p $(pwd)/.maven-cache
|
||||||
RUNS sleep 10
|
|
||||||
|
|
||||||
# wait for healthchecks to pass, curl will retry 60 times over 5 min waiting
|
# start newt jira service, cache the users m2 directory to make startup faster
|
||||||
RUNS curl -q -L --retry 360 --retry-delay 1 -f -s "http://localhost:8080/rest/api/2/serverInfo?doHealthCheck=1"
|
RUNS docker run --detach -v $(pwd)/.maven-cache:/root/.m2/repository --name go-jira-test --publish 8080:8080 go-jira-test:latest
|
||||||
|
|
||||||
|
# wait for docker service to get started
|
||||||
|
RUNS sleep 5
|
||||||
|
|
||||||
|
echo "# Waiting for jira service to be listening on port 8080"
|
||||||
|
docker exec -i go-jira-test tail -f screenlog.0 | grep -m 1 'jira started successfully' | sed 's/^/# /'
|
||||||
|
|
||||||
|
# wait for healthchecks to pass, curl will retry 900 times over 15 min waiting
|
||||||
|
RUNS curl -q -L --retry 900 --retry-delay 1 -f -s "http://localhost:8080/rest/api/2/serverInfo?doHealthCheck=1"
|
||||||
|
|
||||||
# login to jira as admin user
|
# login to jira as admin user
|
||||||
echo "admin123" | RUNS $jira login
|
RUNS $jira login
|
||||||
|
|
||||||
# create gojira user
|
# create gojira user
|
||||||
RUNS $jira req -M POST /rest/api/2/user '{"name":"gojira","password":"gojira123","emailAddress":"gojira@example.com","displayName":"Go Jira"}'
|
RUNS $jira req -M POST /rest/api/2/user '{"name":"gojira","password":"gojira123","emailAddress":"gojira@example.com","displayName":"GoJira"}'
|
||||||
|
|
||||||
# create mojira user (need secondary user for voting)
|
# create mothra user (need secondary user for voting)
|
||||||
RUNS $jira req -M POST /rest/api/2/user '{"name":"mojira","password":"mojira123","emailAddress":"mojira@example.com","displayName":"Mo Jira"}'
|
RUNS $jira req -M POST /rest/api/2/user '{"name":"mothra","password":"mothra123","emailAddress":"mothra@example.com","displayName":"Mothra"}'
|
||||||
|
|
||||||
# create SCRUM softwareproject
|
# create SCRUM softwareproject
|
||||||
RUNS $jira req -M POST /rest/api/2/project '{"key":"SCRUM","name":"Scrum","projectTypeKey":"software","projectTemplateKey":"com.pyxis.greenhopper.jira:gh-scrum-template","lead":"gojira"}'
|
RUNS $jira req -M POST /rest/api/2/project '{"key":"SCRUM","name":"Scrum","projectTypeKey":"software","projectTemplateKey":"com.pyxis.greenhopper.jira:gh-scrum-template","lead":"gojira"}'
|
||||||
|
|||||||
+3
-1
@@ -3,6 +3,8 @@ eval "$(curl -q -s https://raw.githubusercontent.com/coryb/osht/master/osht.sh)"
|
|||||||
cd $(dirname $0)
|
cd $(dirname $0)
|
||||||
jira=../jira
|
jira=../jira
|
||||||
|
|
||||||
|
SKIP test -n "$JIRACLOUD" # using Jira Cloud at go-jira.atlassian.net
|
||||||
|
|
||||||
PLAN 7
|
PLAN 7
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -24,6 +26,6 @@ echo "gojira123" | RUNS $jira login
|
|||||||
|
|
||||||
RUNS $jira req /rest/auth/1/session </dev/null
|
RUNS $jira req /rest/auth/1/session </dev/null
|
||||||
GREP '"name": "gojira"'
|
GREP '"name": "gojira"'
|
||||||
GREP '"self": "http://localhost:8080/rest/api/latest/user?username=gojira"'
|
GREP "\"self\": \"$ENDPOINT/rest/api/latest/user?username=gojira\""
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+37
-32
@@ -4,6 +4,11 @@ cd $(dirname $0)
|
|||||||
jira="../jira --project BASIC"
|
jira="../jira --project BASIC"
|
||||||
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
||||||
|
|
||||||
|
ENDPOINT="http://localhost:8080"
|
||||||
|
if [ -n "$JIRACLOUD" ]; then
|
||||||
|
ENDPOINT="https://go-jira.atlassian.net"
|
||||||
|
fi
|
||||||
|
|
||||||
PLAN 86
|
PLAN 86
|
||||||
|
|
||||||
# reset login
|
# reset login
|
||||||
@@ -16,11 +21,11 @@ echo "gojira123" | RUNS $jira login
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
## Create an issue
|
## Create an issue
|
||||||
###############################################################################
|
###############################################################################
|
||||||
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
RUNS $jira -v -v -v create -o summary=summary -o description=description --noedit --saveFile issue.props
|
||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
|
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -80,7 +85,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira done $issue
|
RUNS $jira done $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -98,13 +103,13 @@ EOF
|
|||||||
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
||||||
dup=$(awk '/issue/{print $2}' issue.props)
|
dup=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -115,8 +120,8 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $dup dups $issue --noedit
|
RUNS $jira $dup dups $issue --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -153,7 +158,7 @@ EOF
|
|||||||
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
||||||
blocker=$(awk '/issue/{print $2}' issue.props)
|
blocker=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -162,7 +167,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $blocker blocks $issue
|
RUNS $jira $blocker blocks $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -194,13 +199,13 @@ $(printf %-12s $blocker:) blocks
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# reset login for mojira for voting
|
# reset login for mothra for voting
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
jira="$jira --user mojira"
|
jira="$jira --user mothra"
|
||||||
|
|
||||||
RUNS $jira logout
|
RUNS $jira logout
|
||||||
echo "mojira123" | RUNS $jira login
|
echo "mothra123" | RUNS $jira login
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## vote for main issue, verify it shows when viewing the issue
|
## vote for main issue, verify it shows when viewing the issue
|
||||||
@@ -208,7 +213,7 @@ echo "mojira123" | RUNS $jira login
|
|||||||
|
|
||||||
RUNS $jira vote $issue
|
RUNS $jira vote $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -235,7 +240,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira vote $issue --down
|
RUNS $jira vote $issue --down
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -257,19 +262,19 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## set mojira user as watcher to issue and verify from REST api
|
## set mothra user as watcher to issue and verify from REST api
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira watch $issue
|
RUNS $jira watch $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# FIXME we probably need a watchers command to wrap this?
|
# FIXME we probably need a watchers command to wrap this?
|
||||||
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
gojira
|
gojira
|
||||||
mojira
|
mothra
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -278,7 +283,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira trans "In Progress" $blocker --noedit
|
RUNS $jira trans "In Progress" $blocker --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -287,7 +292,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira todo $blocker
|
RUNS $jira todo $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -296,7 +301,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira trans "review" $blocker --noedit
|
RUNS $jira trans "review" $blocker --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -305,7 +310,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira todo $blocker
|
RUNS $jira todo $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -314,7 +319,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira prog $blocker
|
RUNS $jira prog $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -323,7 +328,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira done $blocker
|
RUNS $jira done $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -354,7 +359,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -375,7 +380,7 @@ description: |
|
|||||||
description
|
description
|
||||||
|
|
||||||
comments:
|
comments:
|
||||||
- | # mojira, a minute ago
|
- | # mothra, a minute ago
|
||||||
Yo, Comment
|
Yo, Comment
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
@@ -386,7 +391,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira add labels $blocker test-label another-label
|
RUNS $jira add labels $blocker test-label another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -414,7 +419,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira remove labels $blocker another-label
|
RUNS $jira remove labels $blocker another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -442,7 +447,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira set labels $blocker more-label better-label
|
RUNS $jira set labels $blocker more-label better-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -465,12 +470,12 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## Verify that "mojira" user can take the issue (reassign to self)
|
## Verify that "mothra" user can take the issue (reassign to self)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira take $blocker
|
RUNS $jira take $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -481,7 +486,7 @@ status: Done
|
|||||||
summary: blocks
|
summary: blocks
|
||||||
project: BASIC
|
project: BASIC
|
||||||
issuetype: Bug
|
issuetype: Bug
|
||||||
assignee: mojira
|
assignee: mothra
|
||||||
reporter: gojira
|
reporter: gojira
|
||||||
blockers:
|
blockers:
|
||||||
depends: $issue[To Do]
|
depends: $issue[To Do]
|
||||||
@@ -498,7 +503,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira give $blocker gojira
|
RUNS $jira give $blocker gojira
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
|
|||||||
@@ -4,6 +4,11 @@ cd $(dirname $0)
|
|||||||
jira="../jira --project BASIC"
|
jira="../jira --project BASIC"
|
||||||
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
||||||
|
|
||||||
|
ENDPOINT="http://localhost:8080"
|
||||||
|
if [ -n "$JIRACLOUD" ]; then
|
||||||
|
ENDPOINT="https://go-jira.atlassian.net"
|
||||||
|
fi
|
||||||
|
|
||||||
PLAN 8
|
PLAN 8
|
||||||
|
|
||||||
# reset login
|
# reset login
|
||||||
@@ -20,7 +25,7 @@ RUNS $jira create -o summary=summary -o description=description --noedit --saveF
|
|||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
|
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -28,7 +33,7 @@ EOF
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
RUNS $jira add worklog $issue --comment "work is hard" --time-spent "1h 12m" --noedit
|
RUNS $jira add worklog $issue --comment "work is hard" --time-spent "1h 12m" --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|||||||
+35
-30
@@ -4,6 +4,11 @@ cd $(dirname $0)
|
|||||||
jira="../jira --project SCRUM"
|
jira="../jira --project SCRUM"
|
||||||
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
||||||
|
|
||||||
|
ENDPOINT="http://localhost:8080"
|
||||||
|
if [ -n "$JIRACLOUD" ]; then
|
||||||
|
ENDPOINT="https://go-jira.atlassian.net"
|
||||||
|
fi
|
||||||
|
|
||||||
PLAN 84
|
PLAN 84
|
||||||
|
|
||||||
# cleanup from previous failed test executions
|
# cleanup from previous failed test executions
|
||||||
@@ -20,7 +25,7 @@ RUNS $jira create -o summary=summary -o description=description --noedit --saveF
|
|||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
|
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -67,7 +72,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira done $issue
|
RUNS $jira done $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -85,13 +90,13 @@ EOF
|
|||||||
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
||||||
dup=$(awk '/issue/{print $2}' issue.props)
|
dup=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -102,8 +107,8 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $dup dups $issue --noedit
|
RUNS $jira $dup dups $issue --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -140,7 +145,7 @@ EOF
|
|||||||
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
||||||
blocker=$(awk '/issue/{print $2}' issue.props)
|
blocker=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -149,7 +154,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $blocker blocks $issue
|
RUNS $jira $blocker blocks $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -181,13 +186,13 @@ $(printf %-12s $blocker:) blocks
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# reset login for mojira for voting
|
# reset login for mothra for voting
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
jira="$jira --user mojira"
|
jira="$jira --user mothra"
|
||||||
|
|
||||||
RUNS $jira logout
|
RUNS $jira logout
|
||||||
echo "mojira123" | RUNS $jira login
|
echo "mothra123" | RUNS $jira login
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## vote for main issue, verify it shows when viewing the issue
|
## vote for main issue, verify it shows when viewing the issue
|
||||||
@@ -195,7 +200,7 @@ echo "mojira123" | RUNS $jira login
|
|||||||
|
|
||||||
RUNS $jira vote $issue
|
RUNS $jira vote $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -222,7 +227,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira vote $issue --down
|
RUNS $jira vote $issue --down
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -244,19 +249,19 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## set mojira user as watcher to issue and verify from REST api
|
## set mothra user as watcher to issue and verify from REST api
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira watch $issue
|
RUNS $jira watch $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# FIXME we probably need a watchers command to wrap this?
|
# FIXME we probably need a watchers command to wrap this?
|
||||||
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
gojira
|
gojira
|
||||||
mojira
|
mothra
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -265,7 +270,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira trans "In Progress" $blocker --noedit
|
RUNS $jira trans "In Progress" $blocker --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -274,7 +279,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira todo $blocker
|
RUNS $jira todo $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -292,7 +297,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira todo $blocker
|
RUNS $jira todo $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -301,7 +306,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira prog $blocker
|
RUNS $jira prog $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -310,7 +315,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira done $blocker
|
RUNS $jira done $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -341,7 +346,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -362,7 +367,7 @@ description: |
|
|||||||
description
|
description
|
||||||
|
|
||||||
comments:
|
comments:
|
||||||
- | # mojira, a minute ago
|
- | # mothra, a minute ago
|
||||||
Yo, Comment
|
Yo, Comment
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
@@ -373,7 +378,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira add labels $blocker test-label another-label
|
RUNS $jira add labels $blocker test-label another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -401,7 +406,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira remove labels $blocker another-label
|
RUNS $jira remove labels $blocker another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -429,7 +434,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira set labels $blocker more-label better-label
|
RUNS $jira set labels $blocker more-label better-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -452,12 +457,12 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## Verify that "mojira" user can take the issue (reassign to self)
|
## Verify that "mothra" user can take the issue (reassign to self)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira take $blocker
|
RUNS $jira take $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -468,7 +473,7 @@ status: Done
|
|||||||
summary: blocks
|
summary: blocks
|
||||||
project: SCRUM
|
project: SCRUM
|
||||||
issuetype: Bug
|
issuetype: Bug
|
||||||
assignee: mojira
|
assignee: mothra
|
||||||
reporter: gojira
|
reporter: gojira
|
||||||
blockers:
|
blockers:
|
||||||
depends: $issue[To Do]
|
depends: $issue[To Do]
|
||||||
@@ -485,7 +490,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira give $blocker gojira
|
RUNS $jira give $blocker gojira
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
|
|||||||
+35
-30
@@ -4,6 +4,11 @@ cd $(dirname $0)
|
|||||||
jira="../jira --project KANBAN"
|
jira="../jira --project KANBAN"
|
||||||
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
||||||
|
|
||||||
|
ENDPOINT="http://localhost:8080"
|
||||||
|
if [ -n "$JIRACLOUD" ]; then
|
||||||
|
ENDPOINT="https://go-jira.atlassian.net"
|
||||||
|
fi
|
||||||
|
|
||||||
PLAN 86
|
PLAN 86
|
||||||
|
|
||||||
# cleanup from previous failed test executions
|
# cleanup from previous failed test executions
|
||||||
@@ -20,7 +25,7 @@ RUNS $jira create -o summary=summary -o description=description --noedit --saveF
|
|||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
|
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -67,7 +72,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira done $issue
|
RUNS $jira done $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -85,13 +90,13 @@ EOF
|
|||||||
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
||||||
dup=$(awk '/issue/{print $2}' issue.props)
|
dup=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -102,8 +107,8 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $dup dups $issue --noedit
|
RUNS $jira $dup dups $issue --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -140,7 +145,7 @@ EOF
|
|||||||
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
||||||
blocker=$(awk '/issue/{print $2}' issue.props)
|
blocker=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -149,7 +154,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $blocker blocks $issue
|
RUNS $jira $blocker blocks $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -181,13 +186,13 @@ $(printf %-12s $blocker:) blocks
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# reset login for mojira for voting
|
# reset login for mothra for voting
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
jira="$jira --user mojira"
|
jira="$jira --user mothra"
|
||||||
|
|
||||||
RUNS $jira logout
|
RUNS $jira logout
|
||||||
echo "mojira123" | RUNS $jira login
|
echo "mothra123" | RUNS $jira login
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## vote for main issue, verify it shows when viewing the issue
|
## vote for main issue, verify it shows when viewing the issue
|
||||||
@@ -195,7 +200,7 @@ echo "mojira123" | RUNS $jira login
|
|||||||
|
|
||||||
RUNS $jira vote $issue
|
RUNS $jira vote $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -222,7 +227,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira vote $issue --down
|
RUNS $jira vote $issue --down
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -244,19 +249,19 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## set mojira user as watcher to issue and verify from REST api
|
## set mothra user as watcher to issue and verify from REST api
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira watch $issue
|
RUNS $jira watch $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# FIXME we probably need a watchers command to wrap this?
|
# FIXME we probably need a watchers command to wrap this?
|
||||||
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
gojira
|
gojira
|
||||||
mojira
|
mothra
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -265,7 +270,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira trans "In Progress" $blocker --noedit
|
RUNS $jira trans "In Progress" $blocker --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -283,7 +288,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira backlog $blocker --noedit
|
RUNS $jira backlog $blocker --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -301,7 +306,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira backlog $blocker
|
RUNS $jira backlog $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -310,7 +315,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira prog $blocker
|
RUNS $jira prog $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -319,7 +324,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira done $blocker
|
RUNS $jira done $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -350,7 +355,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -371,7 +376,7 @@ description: |
|
|||||||
description
|
description
|
||||||
|
|
||||||
comments:
|
comments:
|
||||||
- | # mojira, a minute ago
|
- | # mothra, a minute ago
|
||||||
Yo, Comment
|
Yo, Comment
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
@@ -382,7 +387,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira add labels $blocker test-label another-label
|
RUNS $jira add labels $blocker test-label another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -410,7 +415,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira remove labels $blocker another-label
|
RUNS $jira remove labels $blocker another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -438,7 +443,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira set labels $blocker more-label better-label
|
RUNS $jira set labels $blocker more-label better-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -461,12 +466,12 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## Verify that "mojira" user can take the issue (reassign to self)
|
## Verify that "mothra" user can take the issue (reassign to self)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira take $blocker
|
RUNS $jira take $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -477,7 +482,7 @@ status: Done
|
|||||||
summary: blocks
|
summary: blocks
|
||||||
project: KANBAN
|
project: KANBAN
|
||||||
issuetype: Bug
|
issuetype: Bug
|
||||||
assignee: mojira
|
assignee: mothra
|
||||||
reporter: gojira
|
reporter: gojira
|
||||||
blockers:
|
blockers:
|
||||||
depends: $issue[Backlog]
|
depends: $issue[Backlog]
|
||||||
@@ -494,7 +499,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira give $blocker gojira
|
RUNS $jira give $blocker gojira
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
|
|||||||
+38
-33
@@ -4,6 +4,11 @@ cd $(dirname $0)
|
|||||||
jira="../jira --project PROJECT"
|
jira="../jira --project PROJECT"
|
||||||
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
||||||
|
|
||||||
|
ENDPOINT="http://localhost:8080"
|
||||||
|
if [ -n "$JIRACLOUD" ]; then
|
||||||
|
ENDPOINT="https://go-jira.atlassian.net"
|
||||||
|
fi
|
||||||
|
|
||||||
PLAN 84
|
PLAN 84
|
||||||
|
|
||||||
# cleanup from previous failed test executions
|
# cleanup from previous failed test executions
|
||||||
@@ -20,7 +25,7 @@ RUNS $jira create -o summary=summary -o description=description --noedit --saveF
|
|||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
|
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -67,7 +72,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira done $issue
|
RUNS $jira done $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -85,13 +90,13 @@ EOF
|
|||||||
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
||||||
dup=$(awk '/issue/{print $2}' issue.props)
|
dup=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -102,8 +107,8 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $dup dups $issue --noedit
|
RUNS $jira $dup dups $issue --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -140,7 +145,7 @@ EOF
|
|||||||
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
||||||
blocker=$(awk '/issue/{print $2}' issue.props)
|
blocker=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -149,7 +154,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $blocker blocks $issue
|
RUNS $jira $blocker blocks $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -181,13 +186,13 @@ $(printf %-12s $blocker:) blocks
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# reset login for mojira for voting
|
# reset login for mothra for voting
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
jira="$jira --user mojira"
|
jira="$jira --user mothra"
|
||||||
|
|
||||||
RUNS $jira logout
|
RUNS $jira logout
|
||||||
echo "mojira123" | RUNS $jira login
|
echo "mothra123" | RUNS $jira login
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## vote for main issue, verify it shows when viewing the issue
|
## vote for main issue, verify it shows when viewing the issue
|
||||||
@@ -195,7 +200,7 @@ echo "mojira123" | RUNS $jira login
|
|||||||
|
|
||||||
RUNS $jira vote $issue
|
RUNS $jira vote $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -222,7 +227,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira vote $issue --down
|
RUNS $jira vote $issue --down
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -244,19 +249,19 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## set mojira user as watcher to issue and verify from REST api
|
## set mothra user as watcher to issue and verify from REST api
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira watch $issue
|
RUNS $jira watch $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# FIXME we probably need a watchers command to wrap this?
|
# FIXME we probably need a watchers command to wrap this?
|
||||||
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
gojira
|
gojira
|
||||||
mojira
|
mothra
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -279,12 +284,12 @@ ERROR Invalid Transition 'review', Available: Start Progress, Done
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## Set it to "Start Progress" and verify that assignee is set to mojira
|
## Set it to "Start Progress" and verify that assignee is set to mothra
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira start $blocker
|
RUNS $jira start $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -295,7 +300,7 @@ status: In Progress
|
|||||||
summary: blocks
|
summary: blocks
|
||||||
project: PROJECT
|
project: PROJECT
|
||||||
issuetype: Task
|
issuetype: Task
|
||||||
assignee: mojira
|
assignee: mothra
|
||||||
reporter: gojira
|
reporter: gojira
|
||||||
blockers:
|
blockers:
|
||||||
depends: $issue[To Do]
|
depends: $issue[To Do]
|
||||||
@@ -311,7 +316,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira stop $blocker
|
RUNS $jira stop $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
@@ -321,7 +326,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira done $blocker
|
RUNS $jira done $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -352,7 +357,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -373,7 +378,7 @@ description: |
|
|||||||
description
|
description
|
||||||
|
|
||||||
comments:
|
comments:
|
||||||
- | # mojira, a minute ago
|
- | # mothra, a minute ago
|
||||||
Yo, Comment
|
Yo, Comment
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
@@ -384,7 +389,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira add labels $blocker test-label another-label
|
RUNS $jira add labels $blocker test-label another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -395,7 +400,7 @@ status: Done
|
|||||||
summary: blocks
|
summary: blocks
|
||||||
project: PROJECT
|
project: PROJECT
|
||||||
issuetype: Task
|
issuetype: Task
|
||||||
assignee: mojira
|
assignee: mothra
|
||||||
reporter: gojira
|
reporter: gojira
|
||||||
blockers:
|
blockers:
|
||||||
depends: $issue[To Do]
|
depends: $issue[To Do]
|
||||||
@@ -412,7 +417,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira remove labels $blocker another-label
|
RUNS $jira remove labels $blocker another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -423,7 +428,7 @@ status: Done
|
|||||||
summary: blocks
|
summary: blocks
|
||||||
project: PROJECT
|
project: PROJECT
|
||||||
issuetype: Task
|
issuetype: Task
|
||||||
assignee: mojira
|
assignee: mothra
|
||||||
reporter: gojira
|
reporter: gojira
|
||||||
blockers:
|
blockers:
|
||||||
depends: $issue[To Do]
|
depends: $issue[To Do]
|
||||||
@@ -440,7 +445,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira set labels $blocker more-label better-label
|
RUNS $jira set labels $blocker more-label better-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -451,7 +456,7 @@ status: Done
|
|||||||
summary: blocks
|
summary: blocks
|
||||||
project: PROJECT
|
project: PROJECT
|
||||||
issuetype: Task
|
issuetype: Task
|
||||||
assignee: mojira
|
assignee: mothra
|
||||||
reporter: gojira
|
reporter: gojira
|
||||||
blockers:
|
blockers:
|
||||||
depends: $issue[To Do]
|
depends: $issue[To Do]
|
||||||
@@ -468,7 +473,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira give $blocker gojira
|
RUNS $jira give $blocker gojira
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -491,12 +496,12 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## Verify that "mojira" user can take the issue (reassign to self)
|
## Verify that "mothra" user can take the issue (reassign to self)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira take $blocker
|
RUNS $jira take $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -507,7 +512,7 @@ status: Done
|
|||||||
summary: blocks
|
summary: blocks
|
||||||
project: PROJECT
|
project: PROJECT
|
||||||
issuetype: Task
|
issuetype: Task
|
||||||
assignee: mojira
|
assignee: mothra
|
||||||
reporter: gojira
|
reporter: gojira
|
||||||
blockers:
|
blockers:
|
||||||
depends: $issue[To Do]
|
depends: $issue[To Do]
|
||||||
|
|||||||
+35
-30
@@ -4,6 +4,11 @@ cd $(dirname $0)
|
|||||||
jira="../jira --project PROCESS"
|
jira="../jira --project PROCESS"
|
||||||
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
||||||
|
|
||||||
|
ENDPOINT="http://localhost:8080"
|
||||||
|
if [ -n "$JIRACLOUD" ]; then
|
||||||
|
ENDPOINT="https://go-jira.atlassian.net"
|
||||||
|
fi
|
||||||
|
|
||||||
PLAN 84
|
PLAN 84
|
||||||
|
|
||||||
# cleanup from previous failed test executions
|
# cleanup from previous failed test executions
|
||||||
@@ -21,7 +26,7 @@ RUNS $jira create -o summary=summary -o description=description --noedit --saveF
|
|||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
|
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -69,13 +74,13 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira start $issue
|
RUNS $jira start $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
RUNS $jira stop $issue
|
RUNS $jira stop $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -93,13 +98,13 @@ EOF
|
|||||||
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
||||||
dup=$(awk '/issue/{print $2}' issue.props)
|
dup=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -112,9 +117,9 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $dup dups $issue --noedit
|
RUNS $jira $dup dups $issue --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -151,7 +156,7 @@ EOF
|
|||||||
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
||||||
blocker=$(awk '/issue/{print $2}' issue.props)
|
blocker=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -160,7 +165,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $blocker blocks $issue
|
RUNS $jira $blocker blocks $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -192,13 +197,13 @@ $(printf %-12s $blocker:) blocks
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# reset login for mojira for voting
|
# reset login for mothra for voting
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
jira="$jira --user mojira"
|
jira="$jira --user mothra"
|
||||||
|
|
||||||
RUNS $jira logout
|
RUNS $jira logout
|
||||||
echo "mojira123" | RUNS $jira login
|
echo "mothra123" | RUNS $jira login
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## vote for main issue, verify it shows when viewing the issue
|
## vote for main issue, verify it shows when viewing the issue
|
||||||
@@ -206,7 +211,7 @@ echo "mojira123" | RUNS $jira login
|
|||||||
|
|
||||||
RUNS $jira vote $issue
|
RUNS $jira vote $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -233,7 +238,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira vote $issue --down
|
RUNS $jira vote $issue --down
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -255,19 +260,19 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## set mojira user as watcher to issue and verify from REST api
|
## set mothra user as watcher to issue and verify from REST api
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira watch $issue
|
RUNS $jira watch $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# FIXME we probably need a watchers command to wrap this?
|
# FIXME we probably need a watchers command to wrap this?
|
||||||
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
gojira
|
gojira
|
||||||
mojira
|
mothra
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -295,7 +300,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira start $blocker
|
RUNS $jira start $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -304,7 +309,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira stop $blocker
|
RUNS $jira stop $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
@@ -314,7 +319,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira reopen $blocker
|
RUNS $jira reopen $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -345,7 +350,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -366,7 +371,7 @@ description: |
|
|||||||
description
|
description
|
||||||
|
|
||||||
comments:
|
comments:
|
||||||
- | # mojira, a minute ago
|
- | # mothra, a minute ago
|
||||||
Yo, Comment
|
Yo, Comment
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
@@ -377,7 +382,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira add labels $blocker test-label another-label
|
RUNS $jira add labels $blocker test-label another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -405,7 +410,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira remove labels $blocker another-label
|
RUNS $jira remove labels $blocker another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -433,7 +438,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira set labels $blocker more-label better-label
|
RUNS $jira set labels $blocker more-label better-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -456,12 +461,12 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## Verify that "mojira" user can take the issue (reassign to self)
|
## Verify that "mothra" user can take the issue (reassign to self)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira take $blocker
|
RUNS $jira take $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -472,7 +477,7 @@ status: Open
|
|||||||
summary: blocks
|
summary: blocks
|
||||||
project: PROCESS
|
project: PROCESS
|
||||||
issuetype: Task
|
issuetype: Task
|
||||||
assignee: mojira
|
assignee: mothra
|
||||||
reporter: gojira
|
reporter: gojira
|
||||||
blockers:
|
blockers:
|
||||||
depends: $issue[Open]
|
depends: $issue[Open]
|
||||||
@@ -489,7 +494,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira give $blocker gojira
|
RUNS $jira give $blocker gojira
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
|
|||||||
+31
-26
@@ -4,6 +4,11 @@ cd $(dirname $0)
|
|||||||
jira="../jira --project TASK"
|
jira="../jira --project TASK"
|
||||||
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
export JIRA_LOG_FORMAT="%{level:-5s} %{message}"
|
||||||
|
|
||||||
|
ENDPOINT="http://localhost:8080"
|
||||||
|
if [ -n "$JIRACLOUD" ]; then
|
||||||
|
ENDPOINT="https://go-jira.atlassian.net"
|
||||||
|
fi
|
||||||
|
|
||||||
PLAN 82
|
PLAN 82
|
||||||
|
|
||||||
# cleanup from previous failed test executions
|
# cleanup from previous failed test executions
|
||||||
@@ -20,7 +25,7 @@ RUNS $jira create -o summary=summary -o description=description --noedit --saveF
|
|||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
|
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -67,7 +72,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira done $issue
|
RUNS $jira done $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -85,13 +90,13 @@ EOF
|
|||||||
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
RUNS $jira create -o summary=summary -o description=description --noedit --saveFile issue.props
|
||||||
issue=$(awk '/issue/{print $2}' issue.props)
|
issue=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
RUNS $jira create -o summary=dup -o description=dup --noedit --saveFile issue.props
|
||||||
dup=$(awk '/issue/{print $2}' issue.props)
|
dup=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -104,8 +109,8 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $dup dups $issue --noedit
|
RUNS $jira $dup dups $issue --noedit
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
OK $dup http://localhost:8080/browse/$dup
|
OK $dup $ENDPOINT/browse/$dup
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -142,7 +147,7 @@ EOF
|
|||||||
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
RUNS $jira create -o summary=blocks -o description=blocks --noedit --saveFile issue.props
|
||||||
blocker=$(awk '/issue/{print $2}' issue.props)
|
blocker=$(awk '/issue/{print $2}' issue.props)
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -151,7 +156,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira $blocker blocks $issue
|
RUNS $jira $blocker blocks $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -183,13 +188,13 @@ $(printf %-12s $blocker:) blocks
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# reset login for mojira for voting
|
# reset login for mothra for voting
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
jira="$jira --user mojira"
|
jira="$jira --user mothra"
|
||||||
|
|
||||||
RUNS $jira logout
|
RUNS $jira logout
|
||||||
echo "mojira123" | RUNS $jira login
|
echo "mothra123" | RUNS $jira login
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## vote for main issue, verify it shows when viewing the issue
|
## vote for main issue, verify it shows when viewing the issue
|
||||||
@@ -197,7 +202,7 @@ echo "mojira123" | RUNS $jira login
|
|||||||
|
|
||||||
RUNS $jira vote $issue
|
RUNS $jira vote $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -224,7 +229,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira vote $issue --down
|
RUNS $jira vote $issue --down
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -246,19 +251,19 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## set mojira user as watcher to issue and verify from REST api
|
## set mothra user as watcher to issue and verify from REST api
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira watch $issue
|
RUNS $jira watch $issue
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# FIXME we probably need a watchers command to wrap this?
|
# FIXME we probably need a watchers command to wrap this?
|
||||||
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
RUNS sh -c "$jira req /rest/api/2/issue/$issue/watchers | jq -r .watchers[].name"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
gojira
|
gojira
|
||||||
mojira
|
mothra
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -305,7 +310,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira done $blocker
|
RUNS $jira done $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -336,7 +341,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
RUNS $jira comment $issue --noedit -m "Yo, Comment"
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $issue http://localhost:8080/browse/$issue
|
OK $issue $ENDPOINT/browse/$issue
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $issue
|
RUNS $jira $issue
|
||||||
@@ -357,7 +362,7 @@ description: |
|
|||||||
description
|
description
|
||||||
|
|
||||||
comments:
|
comments:
|
||||||
- | # mojira, a minute ago
|
- | # mothra, a minute ago
|
||||||
Yo, Comment
|
Yo, Comment
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
@@ -368,7 +373,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira add labels $blocker test-label another-label
|
RUNS $jira add labels $blocker test-label another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -396,7 +401,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira remove labels $blocker another-label
|
RUNS $jira remove labels $blocker another-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -424,7 +429,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira set labels $blocker more-label better-label
|
RUNS $jira set labels $blocker more-label better-label
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -447,12 +452,12 @@ description: |
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## Verify that "mojira" user can take the issue (reassign to self)
|
## Verify that "mothra" user can take the issue (reassign to self)
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
RUNS $jira take $blocker
|
RUNS $jira take $blocker
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
@@ -463,7 +468,7 @@ status: Done
|
|||||||
summary: blocks
|
summary: blocks
|
||||||
project: TASK
|
project: TASK
|
||||||
issuetype: Task
|
issuetype: Task
|
||||||
assignee: mojira
|
assignee: mothra
|
||||||
reporter: gojira
|
reporter: gojira
|
||||||
blockers:
|
blockers:
|
||||||
depends: $issue[To Do]
|
depends: $issue[To Do]
|
||||||
@@ -480,7 +485,7 @@ EOF
|
|||||||
|
|
||||||
RUNS $jira give $blocker gojira
|
RUNS $jira give $blocker gojira
|
||||||
DIFF <<EOF
|
DIFF <<EOF
|
||||||
OK $blocker http://localhost:8080/browse/$blocker
|
OK $blocker $ENDPOINT/browse/$blocker
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
RUNS $jira $blocker
|
RUNS $jira $blocker
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
FROM alpine:latest
|
||||||
|
RUN apk --update add openjdk8-jre curl screen && \
|
||||||
|
curl -s -L https://marketplace.atlassian.com/download/plugins/atlassian-plugin-sdk-tgz | tar xzf - && \
|
||||||
|
ln -s /atlassian* /atlassian
|
||||||
|
|
||||||
|
ENV PATH=/bin:/usr/bin:/atlassian/bin
|
||||||
|
|
||||||
|
# Copy in the serivce and also the root .m2 settings to force cache everything.
|
||||||
|
# We also copy in /root/.java settings to prevent the dumb spam prompt from
|
||||||
|
# the atlas-run command:
|
||||||
|
# Would you like to subscribe to the Atlassian developer mailing list? (Y/y/N/n) Y: :
|
||||||
|
COPY dockerroot /
|
||||||
|
WORKDIR /jiratestservice
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
# we wrap the command with screen so that the dumb atlas-run has a tty to watch. Without screen
|
||||||
|
# there is no tty so atlas-run will immediately read an EOF (aka CTRL-D) and interpret that to
|
||||||
|
# mean we want the service to begin the "graceful shutdown" and exit
|
||||||
|
CMD ["screen", "-DmL", "atlas-run", "--http-port", "8080", "--context-path", "ROOT", "--server", "localhost"]
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
RUN curl -Ls https://raw.githubusercontent.com/cptactionhank/docker-atlassian-jira-software/master/docker-entrypoint.sh -o /docker-entrypoint.sh \
|
|
||||||
&& chmod 755 /docker-entrypoint.sh \
|
|
||||||
&& echo jira.websudo.is.disabled = true >> /var/atlassian/jira/jira-config.properties
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
INCLUDE MERGE -VOLUME -COPY \
|
|
||||||
https://raw.githubusercontent.com/cptactionhank/docker-atlassian-jira-software/master/Dockerfile \
|
|
||||||
Dockerfile.inc
|
|
||||||
+16
-33
@@ -2,39 +2,6 @@
|
|||||||
|
|
||||||
The test are written using the `osht` bash testing framework. Please read the [documentation](https://github.com/coryb/osht/blob/master/README.md) for `osht`.
|
The test are written using the `osht` bash testing framework. Please read the [documentation](https://github.com/coryb/osht/blob/master/README.md) for `osht`.
|
||||||
|
|
||||||
## Setup
|
|
||||||
These tests assume there is a jira service running at 127.0.0.1:8080 with user "gojira" and password "gojira123".
|
|
||||||
There should also be a poweruser "admin" with password "admin123"
|
|
||||||
|
|
||||||
The test Jira was setup following the instructions [here](https://github.com/cptactionhank/docker-atlassian-jira).
|
|
||||||
|
|
||||||
|
|
||||||
### build base docker image
|
|
||||||
```
|
|
||||||
docker run --rm -i -v $(pwd):/root:ro coryb/dfpp:1.0.2 Dockerfile.pre | docker build -t go-jira-base:latest -
|
|
||||||
```
|
|
||||||
|
|
||||||
### Initialize container
|
|
||||||
```
|
|
||||||
docker run --detach --name go-jira-test --publish 8080:8080 go-jira-base:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
### create admin user
|
|
||||||
```
|
|
||||||
open http://localhost:8080
|
|
||||||
```
|
|
||||||
Then follow UI workflow to create "admin" user, skip intro and project creation.
|
|
||||||
|
|
||||||
### snapshot docker container
|
|
||||||
```
|
|
||||||
docker commit go-jira-test go-jira-test:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
### Destroy base container
|
|
||||||
```
|
|
||||||
docker rm -f go-jira-test
|
|
||||||
```
|
|
||||||
|
|
||||||
## Running Test:
|
## Running Test:
|
||||||
|
|
||||||
From the top level of the project you can run:
|
From the top level of the project you can run:
|
||||||
@@ -46,8 +13,24 @@ make
|
|||||||
prove
|
prove
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Running individual tests
|
||||||
|
To run a specific test you can run it directly like:
|
||||||
|
```
|
||||||
|
./100basic.t
|
||||||
|
```
|
||||||
|
There is a useful `-v` option to make the test more verbose and an `-a` option to casue the test to abort after the first failure.
|
||||||
|
|
||||||
|
The tests all require the jira service to be running from the docker container, so you will have to manually run the setup script:
|
||||||
|
```
|
||||||
|
./000setup.t
|
||||||
|
```
|
||||||
|
|
||||||
|
After than you can run the other tests over and over. The jira service is just a test instance started for local development. It comes with
|
||||||
|
a temporary license (I think it is 8 hours) so you will have to run the `./000setup.t` script at least once daily.
|
||||||
|
|
||||||
## API Documentation:
|
## API Documentation:
|
||||||
https://docs.atlassian.com/jira/REST/cloud/
|
https://docs.atlassian.com/jira/REST/cloud/
|
||||||
|
https://docs.atlassian.com/jira-software/REST/cloud
|
||||||
|
|
||||||
## projectTempalteKey missing documentation
|
## projectTempalteKey missing documentation
|
||||||
https://answers.atlassian.com/questions/36176301/jira-api-7.1.0-create-project
|
https://answers.atlassian.com/questions/36176301/jira-api-7.1.0-create-project
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
To avoid future confusion, we recommend that you include a license with your plugin.
|
||||||
|
This file is simply a reminder.
|
||||||
|
|
||||||
|
For a template license you can have a look at: http://www.opensource.org/licenses/
|
||||||
|
|
||||||
|
Atlassian releases most of its modules under the Apache2 license: http://opensource.org/licenses/Apache-2.0
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
You have successfully created an Atlassian Plugin!
|
||||||
|
|
||||||
|
Here are the SDK commands you'll use immediately:
|
||||||
|
|
||||||
|
* atlas-run -- installs this plugin into the product and starts it on localhost
|
||||||
|
* atlas-debug -- same as atlas-run, but allows a debugger to attach at port 5005
|
||||||
|
* atlas-cli -- after atlas-run or atlas-debug, opens a Maven command line window:
|
||||||
|
- 'pi' reinstalls the plugin into the running product instance
|
||||||
|
* atlas-help -- prints description for all commands in the SDK
|
||||||
|
|
||||||
|
Full documentation is always available at:
|
||||||
|
|
||||||
|
https://developer.atlassian.com/display/DOCS/Introduction+to+the+Atlassian+Plugin+SDK
|
||||||
@@ -0,0 +1,185 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>com.netflixskunkworks</groupId>
|
||||||
|
<artifactId>jiratestservice</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
|
||||||
|
<organization>
|
||||||
|
<name>Example Company</name>
|
||||||
|
<url>http://www.example.com/</url>
|
||||||
|
</organization>
|
||||||
|
|
||||||
|
<name>jiratestservice</name>
|
||||||
|
<description>This is the com.netflixskunkworks:jiratestservice plugin for Atlassian JIRA.</description>
|
||||||
|
<packaging>atlassian-plugin</packaging>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.atlassian.jira</groupId>
|
||||||
|
<artifactId>jira-api</artifactId>
|
||||||
|
<version>${jira.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<!-- Add dependency on jira-core if you want access to JIRA implementation classes as well as the sanctioned API. -->
|
||||||
|
<!-- This is not normally recommended, but may be required eg when migrating a plugin originally developed against JIRA 4.x -->
|
||||||
|
<!--
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.atlassian.jira</groupId>
|
||||||
|
<artifactId>jira-core</artifactId>
|
||||||
|
<version>${jira.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>4.10</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.atlassian.plugin</groupId>
|
||||||
|
<artifactId>atlassian-spring-scanner-annotation</artifactId>
|
||||||
|
<version>${atlassian.spring.scanner.version}</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.atlassian.plugin</groupId>
|
||||||
|
<artifactId>atlassian-spring-scanner-runtime</artifactId>
|
||||||
|
<version>${atlassian.spring.scanner.version}</version>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.inject</groupId>
|
||||||
|
<artifactId>javax.inject</artifactId>
|
||||||
|
<version>1</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- WIRED TEST RUNNER DEPENDENCIES -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.atlassian.plugins</groupId>
|
||||||
|
<artifactId>atlassian-plugins-osgi-testrunner</artifactId>
|
||||||
|
<version>${plugin.testrunner.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.ws.rs</groupId>
|
||||||
|
<artifactId>jsr311-api</artifactId>
|
||||||
|
<version>1.1.1</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.code.gson</groupId>
|
||||||
|
<artifactId>gson</artifactId>
|
||||||
|
<version>2.2.2-atlassian-1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Uncomment to use TestKit in your project. Details at https://bitbucket.org/atlassian/jira-testkit -->
|
||||||
|
<!-- You can read more about TestKit at https://developer.atlassian.com/display/JIRADEV/Plugin+Tutorial+-+Smarter+integration+testing+with+TestKit -->
|
||||||
|
<!--
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.atlassian.jira.tests</groupId>
|
||||||
|
<artifactId>jira-testkit-client</artifactId>
|
||||||
|
<version>${testkit.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
-->
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.atlassian.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jira-plugin</artifactId>
|
||||||
|
<version>${amps.version}</version>
|
||||||
|
<extensions>true</extensions>
|
||||||
|
<configuration>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<applicationKey>jira-software</applicationKey>
|
||||||
|
<version>${jira.version}</version>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<productVersion>${jira.version}</productVersion>
|
||||||
|
<productDataVersion>${jira.version}</productDataVersion>
|
||||||
|
<!-- Uncomment to install TestKit backdoor in JIRA. -->
|
||||||
|
<!--
|
||||||
|
<pluginArtifacts>
|
||||||
|
<pluginArtifact>
|
||||||
|
<groupId>com.atlassian.jira.tests</groupId>
|
||||||
|
<artifactId>jira-testkit-plugin</artifactId>
|
||||||
|
<version>${testkit.version}</version>
|
||||||
|
</pluginArtifact>
|
||||||
|
</pluginArtifacts>
|
||||||
|
-->
|
||||||
|
<enableQuickReload>true</enableQuickReload>
|
||||||
|
<enableFastdev>false</enableFastdev>
|
||||||
|
|
||||||
|
<!-- See here for an explanation of default instructions: -->
|
||||||
|
<!-- https://developer.atlassian.com/docs/advanced-topics/configuration-of-instructions-in-atlassian-plugins -->
|
||||||
|
<instructions>
|
||||||
|
<Atlassian-Plugin-Key>${atlassian.plugin.key}</Atlassian-Plugin-Key>
|
||||||
|
|
||||||
|
<!-- Add package to export here -->
|
||||||
|
<Export-Package>
|
||||||
|
com.netflixskunkworks.api,
|
||||||
|
</Export-Package>
|
||||||
|
|
||||||
|
<!-- Add package import here -->
|
||||||
|
<Import-Package>
|
||||||
|
org.springframework.osgi.*;resolution:="optional",
|
||||||
|
org.eclipse.gemini.blueprint.*;resolution:="optional",
|
||||||
|
*
|
||||||
|
</Import-Package>
|
||||||
|
|
||||||
|
<!-- Ensure plugin is spring powered -->
|
||||||
|
<Spring-Context>*</Spring-Context>
|
||||||
|
</instructions>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.atlassian.plugin</groupId>
|
||||||
|
<artifactId>atlassian-spring-scanner-maven-plugin</artifactId>
|
||||||
|
<version>${atlassian.spring.scanner.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>atlassian-spring-scanner</goal>
|
||||||
|
</goals>
|
||||||
|
<phase>process-classes</phase>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<scannedDependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.atlassian.plugin</groupId>
|
||||||
|
<artifactId>atlassian-spring-scanner-external-jar</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</scannedDependencies>
|
||||||
|
<verbose>false</verbose>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<jira.version>7.2.0</jira.version>
|
||||||
|
<amps.version>6.2.6</amps.version>
|
||||||
|
<plugin.testrunner.version>1.2.3</plugin.testrunner.version>
|
||||||
|
<atlassian.spring.scanner.version>1.2.13</atlassian.spring.scanner.version>
|
||||||
|
<!-- This key is used to keep the consistency between the key in atlassian-plugin.xml and the key to generate bundle. -->
|
||||||
|
<atlassian.plugin.key>${project.groupId}.${project.artifactId}</atlassian.plugin.key>
|
||||||
|
<!-- TestKit version 6.x for JIRA 6.x -->
|
||||||
|
<testkit.version>6.3.11</testkit.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
<atlassian-plugin key="${atlassian.plugin.key}" name="${project.name}" plugins-version="2">
|
||||||
|
<plugin-info>
|
||||||
|
<description>${project.description}</description>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<vendor name="${project.organization.name}" url="${project.organization.url}" />
|
||||||
|
</plugin-info>
|
||||||
|
</atlassian-plugin>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE map SYSTEM "http://java.sun.com/dtd/preferences.dtd">
|
||||||
|
<map MAP_XML_VERSION="1.0">
|
||||||
|
<entry key="sdk-email-subscribe" value="true"/>
|
||||||
|
</map>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE map SYSTEM "http://java.sun.com/dtd/preferences.dtd">
|
||||||
|
<map MAP_XML_VERSION="1.0">
|
||||||
|
<entry key="last_update_check" value="2016-08-29"/>
|
||||||
|
<entry key="sdk-pom-update-check-6.2.6-cbc3c672c37f65828d50132ed303cf7a" value="true"/>
|
||||||
|
</map>
|
||||||
Executable
+77
@@ -0,0 +1,77 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
||||||
|
<profiles>
|
||||||
|
<!-- Default profile containing Atlassian servers -->
|
||||||
|
<profile>
|
||||||
|
<id>defaultProfile</id>
|
||||||
|
<activation>
|
||||||
|
<activeByDefault>true</activeByDefault>
|
||||||
|
</activation>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>atlassian-public</id>
|
||||||
|
<url>https://maven.atlassian.com/repository/public</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<updatePolicy>never</updatePolicy>
|
||||||
|
<checksumPolicy>warn</checksumPolicy>
|
||||||
|
</snapshots>
|
||||||
|
<releases>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<checksumPolicy>warn</checksumPolicy>
|
||||||
|
<updatePolicy>never</updatePolicy>
|
||||||
|
</releases>
|
||||||
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>atlassian-plugin-sdk</id>
|
||||||
|
<url>file://${env.ATLAS_HOME}/repository</url>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<updatePolicy>never</updatePolicy>
|
||||||
|
</snapshots>
|
||||||
|
<releases>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<checksumPolicy>warn</checksumPolicy>
|
||||||
|
<updatePolicy>never</updatePolicy>
|
||||||
|
</releases>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<pluginRepositories>
|
||||||
|
<pluginRepository>
|
||||||
|
<id>atlassian-public</id>
|
||||||
|
<url>https://maven.atlassian.com/repository/public</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<checksumPolicy>warn</checksumPolicy>
|
||||||
|
<updatePolicy>never</updatePolicy>
|
||||||
|
</releases>
|
||||||
|
<snapshots>
|
||||||
|
<updatePolicy>never</updatePolicy>
|
||||||
|
<checksumPolicy>warn</checksumPolicy>
|
||||||
|
</snapshots>
|
||||||
|
</pluginRepository>
|
||||||
|
<pluginRepository>
|
||||||
|
<id>atlassian-plugin-sdk</id>
|
||||||
|
<url>file://${env.ATLAS_HOME}/repository</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<checksumPolicy>warn</checksumPolicy>
|
||||||
|
<updatePolicy>never</updatePolicy>
|
||||||
|
</releases>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<updatePolicy>never</updatePolicy>
|
||||||
|
</snapshots>
|
||||||
|
</pluginRepository>
|
||||||
|
</pluginRepositories>
|
||||||
|
<properties>
|
||||||
|
<downloadSources>true</downloadSources>
|
||||||
|
<downloadJavadocs>true</downloadJavadocs>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
</settings>
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package jira
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Transport struct {
|
||||||
|
shadow http.Transport
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewUnixProxyTransport(path string) *Transport {
|
||||||
|
dial := func(network, addr string) (net.Conn, error) {
|
||||||
|
return net.Dial("unix", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
shadow := http.Transport{
|
||||||
|
Dial: dial,
|
||||||
|
DialTLS: dial,
|
||||||
|
DisableKeepAlives: true,
|
||||||
|
ResponseHeaderTimeout: 30 * time.Second,
|
||||||
|
ExpectContinueTimeout: 10 * time.Second,
|
||||||
|
}
|
||||||
|
|
||||||
|
return &Transport{shadow}
|
||||||
|
}
|
||||||
|
|
||||||
|
func UnixProxy(path string) *Transport {
|
||||||
|
return NewUnixProxyTransport(os.ExpandEnv(path))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
|
req2 := *req
|
||||||
|
url2 := *req.URL
|
||||||
|
req2.URL = &url2
|
||||||
|
req2.URL.Opaque = fmt.Sprintf("//%s%s", req.URL.Host, req.URL.EscapedPath())
|
||||||
|
return t.shadow.RoundTrip(&req2)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user