Compare commits

..

35 Commits

Author SHA1 Message Date
Cory Bennett ba08d51437 Updated Changelog 2016-12-18 09:48:21 -08:00
Cory Bennett 09d718b5d8 stabbing in the dark 2016-12-17 19:57:45 -08:00
Cory Bennett e3e84d7aa0 only test jira cloud service 2016-12-17 18:52:07 -08:00
Cory Bennett a4f1d754e4 debugging tests 2016-12-17 18:50:20 -08:00
Cory Bennett 683541de1e add verbose test 2016-12-17 18:40:21 -08:00
Cory Bennett e0fd6bab66 only warn about needing login when not already running the login command 2016-12-17 18:32:47 -08:00
Cory Bennett 5ca096ab6e use go-jira.atlassian.net for testing via travis 2016-12-17 17:25:11 -08:00
Cory Bennett ac515e2743 Merge branch 'master' of github.com:Netflix-Skunkworks/go-jira 2016-12-17 14:13:39 -08:00
Cory Bennett be4a5f9156 update for isolated xgo build 2016-12-17 14:13:00 -08:00
coryb 7f10eaa667 Merge pull request #61 from sylus/feature-proxy
fix(http): Add proxy transport
2016-12-17 14:06:45 -08:00
William Hearn b326623ed2 fix(http): Add proxy transport 2016-12-17 16:50:34 -05:00
William Hearn 72c78c6c1c fix(http): Add proxy transport 2016-12-17 14:13:20 -05:00
coryb 5df5a39405 Merge pull request #60 from facundoolano/patch-1
fix typo in readme
2016-12-15 14:00:31 -08:00
Facundo Olano bd54ecc4f6 fix typo in readme 2016-12-15 15:18:11 -03:00
Cory Bennett 073e0bdcce Updated Changelog 2016-11-24 00:11:53 -08:00
Cory Bennett 1347ebe6b6 [#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
2016-11-23 23:43:29 -08:00
coryb c7565b08a1 Merge pull request #53 from jshirley/master
Add support for a unix socket proxy
2016-09-22 19:14:07 -07:00
Jay Shirley 01067e859c Cleaning up usage 2016-09-22 18:54:52 -07:00
Jay Shirley 8b174625d9 Update usage 2016-09-20 06:46:04 -07:00
Cory Bennett 8acc177627 use gopkg.in for links to maintain version compatibility 2016-09-18 12:44:00 -07:00
Cory Bennett 8d9db0e399 remove extraneous tee 2016-08-29 01:00:35 -07:00
Cory Bennett 998e4601c0 reduce mega verbosity 2016-08-29 01:00:01 -07:00
Cory Bennett 2df70edd00 up plan count for the sleep 2016-08-29 00:58:23 -07:00
Cory Bennett f73b3a5dc8 add missing src directory 2016-08-29 00:49:10 -07:00
Cory Bennett e74c94b030 move start.log to directory 2016-08-29 00:23:05 -07:00
Cory Bennett c18d2140e4 try travis cache and log atlas-run start output 2016-08-29 00:19:27 -07:00
Cory Bennett 2b56833c1c break setup to debug in travis 2016-08-29 00:04:21 -07:00
Cory Bennett fe69ad1cec wait for docker service to start? 2016-08-28 23:47:34 -07:00
Cory Bennett 3b18a1863c make maven cache directory local so we can ensure it is always there for travis testing 2016-08-28 23:36:37 -07:00
Cory Bennett d6d6578b11 make prove verbose 2016-08-28 23:32:03 -07:00
Cory Bennett 2b433dda40 golint 2016-08-28 23:30:25 -07:00
Cory Bennett 08a24e7dc3 require docker, run prove after build 2016-08-28 23:24:12 -07:00
Cory Bennett a746ddc6fb use altas-run to build jira test service in docker container 2016-08-28 23:10:54 -07:00
Cory Bennett e254435734 add "rank" command allow ordering backlog issues in agile projects 2016-08-26 19:44:38 -07:00
Jay Shirley 14298bfa52 Adding a unixproxy mechanism 2016-08-25 10:27:59 -07:00
33 changed files with 817 additions and 278 deletions
+1
View File
@@ -12,3 +12,4 @@ t/issue.props
t/.jira.d/templates t/.jira.d/templates
dist/ dist/
src/ src/
t/.maven-cache
+14 -5
View File
@@ -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
+16
View File
@@ -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)]
+23 -16
View File
@@ -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
+1 -1
View File
@@ -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
+84 -13
View File
@@ -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
View File
@@ -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
View File
@@ -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 := ""
+1
View File
@@ -0,0 +1 @@
!src/
Regular → Executable
+9 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+7 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+20
View File
@@ -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"]
-3
View File
@@ -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
-3
View File
@@ -1,3 +0,0 @@
INCLUDE MERGE -VOLUME -COPY \
https://raw.githubusercontent.com/cptactionhank/docker-atlassian-jira-software/master/Dockerfile \
Dockerfile.inc
+16 -33
View File
@@ -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
+6
View File
@@ -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
+13
View File
@@ -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
+185
View File
@@ -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>
+77
View File
@@ -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>
+41
View File
@@ -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)
}