diff --git a/.drone.yml b/.drone.yml index 6ae56fec..9b9318c2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -10,17 +10,15 @@ clone: pipeline: build: - image: webhippie/golang:edge + image: vikunja/golang-build:latest pull: true group: build environment: TAGS: bindata sqlite - GOPATH: /srv/app commands: - - make clean - make lint - make fmt-check - - make swagger-check + # - make swagger-check # Inactive until go-swagger works with go modules - make ineffassign-check - make misspell-check - make build diff --git a/Gopkg.lock b/Gopkg.lock deleted file mode 100644 index aabe2600..00000000 --- a/Gopkg.lock +++ /dev/null @@ -1,324 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:a2c1d0e43bd3baaa071d1b9ed72c27d78169b2b269f71c105ac4ba34b1be4a39" - name = "github.com/davecgh/go-spew" - packages = ["spew"] - pruneopts = "UT" - revision = "346938d642f2ec3594ed81d874461961cd0faa76" - version = "v1.1.0" - -[[projects]] - digest = "1:6cb5bf34f3e3bb61e76d976f5bd29d245b567f208e1fd7cb8104b736a5eb649d" - name = "github.com/dgrijalva/jwt-go" - packages = ["."] - pruneopts = "UT" - revision = "a539ee1a749a2b895533f979515ac7e6e0f5b650" - -[[projects]] - digest = "1:abeb38ade3f32a92943e5be54f55ed6d6e3b6602761d74b4aab4c9dd45c18abd" - name = "github.com/fsnotify/fsnotify" - packages = ["."] - pruneopts = "UT" - revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9" - version = "v1.4.7" - -[[projects]] - digest = "1:0594af97b2f4cec6554086eeace6597e20a4b69466eb4ada25adf9f4300dddd2" - name = "github.com/garyburd/redigo" - packages = [ - "internal", - "redis", - ] - pruneopts = "UT" - revision = "a69d19351219b6dd56f274f96d85a7014a2ec34e" - version = "v1.6.0" - -[[projects]] - digest = "1:d2b67246c3fa959edfa1be84b407cf0a0a4cabbace0843814b1729b5af808d9e" - name = "github.com/go-sql-driver/mysql" - packages = ["."] - pruneopts = "UT" - revision = "ee359f95877bdef36cbb602711e49b6f0becfca9" - -[[projects]] - digest = "1:3f854136f2da9cde22fa0dd29e74fb7c920c5d79d060847fe9b96f2d3cfab746" - name = "github.com/go-xorm/builder" - packages = ["."] - pruneopts = "UT" - revision = "c8871c857d2555fbfbd8524f895be5386d3d8836" - -[[projects]] - digest = "1:ee0b218753df985dd6633b13a894a69f0c1ea385f092f4afa093d407bb165cc5" - name = "github.com/go-xorm/core" - packages = ["."] - pruneopts = "UT" - revision = "f43c33d9a48db006417a7ac4c16b08897e3e1458" - version = "v0.5.8" - -[[projects]] - digest = "1:8e0764e74dd6cf539d3c035772d3fd0009b89fff9889a1131139be6d871c90dd" - name = "github.com/go-xorm/xorm" - packages = ["."] - pruneopts = "UT" - revision = "29d4a0330a00b9be468b70e3fb0f74109348c358" - -[[projects]] - branch = "master" - digest = "1:d4a957ebe4ccebc299c1f6b6a78a0713af379721980cf14990b8ab8fa93cd92d" - name = "github.com/go-xorm/xorm-redis-cache" - packages = ["."] - pruneopts = "UT" - revision = "859b313566b2ef090319245fd4fe7692f25dbd79" - -[[projects]] - digest = "1:c0d19ab64b32ce9fe5cf4ddceba78d5bc9807f0016db6b1183599da3dcc24d10" - name = "github.com/hashicorp/hcl" - packages = [ - ".", - "hcl/ast", - "hcl/parser", - "hcl/printer", - "hcl/scanner", - "hcl/strconv", - "hcl/token", - "json/parser", - "json/scanner", - "json/token", - ] - pruneopts = "UT" - revision = "8cb6e5b959231cc1119e43259c4a608f9c51a241" - version = "v1.0.0" - -[[projects]] - digest = "1:8eb1de8112c9924d59bf1d3e5c26f5eaa2bfc2a5fcbb92dc1c2e4546d695f277" - name = "github.com/imdario/mergo" - packages = ["."] - pruneopts = "UT" - revision = "9f23e2d6bd2a77f959b2bf6acdbefd708a83a4a4" - version = "v0.3.6" - -[[projects]] - digest = "1:82c5850e702ccef3976cdfdf737725013587c64e02e5ecae57e86431163b27aa" - name = "github.com/labstack/echo" - packages = [ - ".", - "middleware", - ] - pruneopts = "UT" - revision = "1049c9613cd371b7ea8f219404c9a821734781ed" - version = "v3.1.0" - -[[projects]] - digest = "1:ef6158d11f87c8036114cf3d2bf5c50edb4aa0b4aab5deef26716a8bb674a9ad" - name = "github.com/labstack/gommon" - packages = [ - "bytes", - "color", - "log", - "random", - ] - pruneopts = "UT" - revision = "57409ada9da0f2afad6664c49502f8c50fbd8476" - version = "0.2.3" - -[[projects]] - digest = "1:c568d7727aa262c32bdf8a3f7db83614f7af0ed661474b24588de635c20024c7" - name = "github.com/magiconair/properties" - packages = ["."] - pruneopts = "UT" - revision = "c2353362d570a7bfa228149c62842019201cfb71" - version = "v1.8.0" - -[[projects]] - digest = "1:a36a1febe1240bb79a208390ad17e1080555b0031a9ed42a41eae173cca3fd74" - name = "github.com/mattn/go-colorable" - packages = ["."] - pruneopts = "UT" - revision = "ad5389df28cdac544c99bd7b9161a0b5b6ca9d1b" - -[[projects]] - digest = "1:d4d17353dbd05cb52a2a52b7fe1771883b682806f68db442b436294926bbfafb" - name = "github.com/mattn/go-isatty" - packages = ["."] - pruneopts = "UT" - revision = "a5cdd64afdee435007ee3e9f6ed4684af949d568" - -[[projects]] - digest = "1:3cafc6a5a1b8269605d9df4c6956d43d8011fc57f266ca6b9d04da6c09dee548" - name = "github.com/mattn/go-sqlite3" - packages = ["."] - pruneopts = "UT" - revision = "25ecb14adfc7543176f7d85291ec7dba82c6f7e4" - version = "v1.9.0" - -[[projects]] - digest = "1:645110e089152bd0f4a011a2648fbb0e4df5977be73ca605781157ac297f50c4" - name = "github.com/mitchellh/mapstructure" - packages = ["."] - pruneopts = "UT" - revision = "fa473d140ef3c6adf42d6b391fe76707f1f243c8" - version = "v1.0.0" - -[[projects]] - digest = "1:5b3b29ce0e569f62935d9541dff2e16cc09df981ebde48e82259076a73a3d0c7" - name = "github.com/op/go-logging" - packages = ["."] - pruneopts = "UT" - revision = "b2cb9fa56473e98db8caba80237377e83fe44db5" - version = "v1" - -[[projects]] - digest = "1:95741de3af260a92cc5c7f3f3061e85273f5a81b5db20d4bd68da74bd521675e" - name = "github.com/pelletier/go-toml" - packages = ["."] - pruneopts = "UT" - revision = "c01d1270ff3e442a8a57cddc1c92dc1138598194" - version = "v1.2.0" - -[[projects]] - digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe" - name = "github.com/pmezard/go-difflib" - packages = ["difflib"] - pruneopts = "UT" - revision = "792786c7400a136282c1664665ae0a8db921c6c2" - version = "v1.0.0" - -[[projects]] - digest = "1:6a4a11ba764a56d2758899ec6f3848d24698d48442ebce85ee7a3f63284526cd" - name = "github.com/spf13/afero" - packages = [ - ".", - "mem", - ] - pruneopts = "UT" - revision = "d40851caa0d747393da1ffb28f7f9d8b4eeffebd" - version = "v1.1.2" - -[[projects]] - digest = "1:516e71bed754268937f57d4ecb190e01958452336fa73dbac880894164e91c1f" - name = "github.com/spf13/cast" - packages = ["."] - pruneopts = "UT" - revision = "8965335b8c7107321228e3e3702cab9832751bac" - version = "v1.2.0" - -[[projects]] - digest = "1:68ea4e23713989dc20b1bded5d9da2c5f9be14ff9885beef481848edd18c26cb" - name = "github.com/spf13/jwalterweatherman" - packages = ["."] - pruneopts = "UT" - revision = "4a4406e478ca629068e7768fc33f3f044173c0a6" - version = "v1.0.0" - -[[projects]] - digest = "1:dab83a1bbc7ad3d7a6ba1a1cc1760f25ac38cdf7d96a5cdd55cd915a4f5ceaf9" - name = "github.com/spf13/pflag" - packages = ["."] - pruneopts = "UT" - revision = "9a97c102cda95a86cec2345a6f09f55a939babf5" - version = "v1.0.2" - -[[projects]] - digest = "1:6e30a27eac59a148b3f7a32e0ba54706b31dcde5a42f63b22cb47873b62fa343" - name = "github.com/spf13/viper" - packages = ["."] - pruneopts = "UT" - revision = "8fb642006536c8d3760c99d4fa2389f5e2205631" - version = "v1.2.0" - -[[projects]] - digest = "1:a7496c8d47f794d15a6e41f8ada426d4a41c038fac9bd75c1abc30faacf469c9" - name = "github.com/stretchr/testify" - packages = ["assert"] - pruneopts = "UT" - revision = "87b1dfb5b2fa649f52695dd9eae19abe404a4308" - -[[projects]] - branch = "master" - digest = "1:c468422f334a6b46a19448ad59aaffdfc0a36b08fdcc1c749a0b29b6453d7e59" - name = "github.com/valyala/bytebufferpool" - packages = ["."] - pruneopts = "UT" - revision = "e746df99fe4a3986f4d4f79e13c1e0117ce9c2f7" - -[[projects]] - branch = "master" - digest = "1:268b8bce0064e8c057d7b913605459f9a26dcab864c0886a56d196540fbf003f" - name = "github.com/valyala/fasttemplate" - packages = ["."] - pruneopts = "UT" - revision = "dcecefd839c4193db0d35b88ec65b4c12d360ab0" - -[[projects]] - digest = "1:456c96b87c9481d98aac8ef9862053a8fc97b981d26f6cd8d63de783dd24acec" - name = "golang.org/x/crypto" - packages = [ - "acme", - "acme/autocert", - "bcrypt", - "blowfish", - ] - pruneopts = "UT" - revision = "9419663f5a44be8b34ca85f08abc5fe1be11f8a3" - -[[projects]] - digest = "1:f1275b0d1ed7d43eeb7a0464a148258f04e66a4783514d5c790d4e970cc7df6d" - name = "golang.org/x/sys" - packages = ["unix"] - pruneopts = "UT" - revision = "314a259e304ff91bd6985da2a7149bbf91237993" - -[[projects]] - digest = "1:8029e9743749d4be5bc9f7d42ea1659471767860f0cdc34d37c3111bd308a295" - name = "golang.org/x/text" - packages = [ - "internal/gen", - "internal/triegen", - "internal/ucd", - "transform", - "unicode/cldr", - "unicode/norm", - ] - pruneopts = "UT" - revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" - version = "v0.3.0" - -[[projects]] - digest = "1:59c645bd5db5ec4a889a1ac62ce9cb3c4483cc24c66907ea75de2516d6fe4716" - name = "gopkg.in/testfixtures.v2" - packages = ["."] - pruneopts = "UT" - revision = "1d98c34adfb14dbedeef37127968233b5d960f02" - version = "v2.4.5" - -[[projects]] - digest = "1:73e6fda93622790d2371344759df06ff5ff2fac64a6b6e8832b792e7402956e7" - name = "gopkg.in/yaml.v2" - packages = ["."] - pruneopts = "UT" - revision = "d670f9405373e636a5a2765eea47fac0c9bc91a4" - version = "v2.0.0" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/dgrijalva/jwt-go", - "github.com/go-sql-driver/mysql", - "github.com/go-xorm/core", - "github.com/go-xorm/xorm", - "github.com/go-xorm/xorm-redis-cache", - "github.com/imdario/mergo", - "github.com/labstack/echo", - "github.com/labstack/echo/middleware", - "github.com/mattn/go-sqlite3", - "github.com/op/go-logging", - "github.com/spf13/viper", - "github.com/stretchr/testify/assert", - "golang.org/x/crypto/bcrypt", - "gopkg.in/testfixtures.v2", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml deleted file mode 100644 index aacab069..00000000 --- a/Gopkg.toml +++ /dev/null @@ -1,57 +0,0 @@ -# Gopkg.toml example -# -# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md -# for detailed Gopkg.toml documentation. -# -# required = ["github.com/user/thing/cmd/thing"] -# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] -# -# [[constraint]] -# name = "github.com/user/project" -# version = "1.0.0" -# -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# -# [[override]] -# name = "github.com/x/y" -# version = "2.4.0" -# -# [prune] -# non-go = false -# go-tests = true -# unused-packages = true - -[[constraint]] - name = "github.com/go-xorm/core" - version = "0.5.7" - -[[constraint]] - name = "github.com/labstack/echo" - version = "3.1.0" - -[[constraint]] - name = "github.com/mattn/go-sqlite3" - version = "1.5.0" - -[[constraint]] - name = "gopkg.in/testfixtures.v2" - version = "2.4.3" - -[prune] - go-tests = true - unused-packages = true - -[[constraint]] - name = "github.com/spf13/viper" - version = "1.2.0" - -[[constraint]] - name = "github.com/imdario/mergo" - version = "0.3.6" - -[[constraint]] - name = "github.com/op/go-logging" - version = "1.0.0" diff --git a/Makefile b/Makefile index 5a0a2c17..b607919e 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ endif GOFILES := $(shell find . -name "*.go" -type f ! -path "./vendor/*" ! -path "*/bindata.go") GOFMT ?= gofmt -s -GOFLAGS := -v +GOFLAGS := -v -mod=vendor EXTRA_GOFLAGS ?= LDFLAGS := -X "main.Version=$(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')" -X "main.Tags=$(TAGS)" @@ -44,6 +44,8 @@ else endif endif +VERSION := $(shell echo $(VERSION) | sed 's/\//\-/g') + .PHONY: all all: build @@ -58,12 +60,12 @@ test: go tool cover -html=cover.out -o cover.html required-gofmt-version: - @go version | grep -q '\(1.7\|1.8\|1.9\|1.10\|1.11\)' || { echo "We require go version 1.7, 1.8, 1.9 or 1.10 to format code" >&2 && exit 1; } + @go version | grep -q '\(1.7\|1.8\|1.9\|1.10\|1.11\)' || { echo "We require go version 1.7, 1.8, 1.9, 1.10 or 1.11 to format code" >&2 && exit 1; } .PHONY: lint lint: @hash golint > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go get -u golang.org/x/lint/golint; \ + go install $(GOFLAGS) golang.org/x/lint/golint; \ fi for PKG in $(PACKAGES); do golint -set_exit_status $$PKG || exit 1; done; @@ -101,7 +103,7 @@ release-dirs: .PHONY: release-windows release-windows: @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go get -u github.com/karalabe/xgo; \ + go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out vikunja-$(VERSION) . ifeq ($(CI),drone) @@ -111,7 +113,7 @@ endif .PHONY: release-linux release-linux: @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go get -u github.com/karalabe/xgo; \ + go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'linux/*' -out vikunja-$(VERSION) . ifeq ($(CI),drone) @@ -121,7 +123,7 @@ endif .PHONY: release-darwin release-darwin: @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go get -u github.com/karalabe/xgo; \ + go install $(GOFLAGS) github.com/karalabe/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '$(LDFLAGS)' -targets 'darwin/*' -out vikunja-$(VERSION) . ifeq ($(CI),drone) @@ -153,7 +155,7 @@ release-zip: .PHONY: generate-swagger generate-swagger: @hash swagger > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go get -u github.com/go-swagger/go-swagger/cmd/swagger; \ + go install $(GOFLAGS) github.com/go-swagger/go-swagger/cmd/swagger; \ fi swagger generate spec -o ./public/swagger/swagger.v1.json @@ -169,27 +171,27 @@ swagger-check: generate-swagger .PHONY: swagger-validate swagger-validate: @hash swagger > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go get -u github.com/go-swagger/go-swagger/cmd/swagger; \ + go install $(GOFLAGS) github.com/go-swagger/go-swagger/cmd/swagger; \ fi swagger validate ./public/swagger/swagger.v1.json .PHONY: misspell-check misspell-check: @hash misspell > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go get -u github.com/client9/misspell/cmd/misspell; \ + go install $(GOFLAGS) github.com/client9/misspell/cmd/misspell; \ fi for S in $(GOFILES); do misspell -error $$S || exit 1; done; .PHONY: ineffassign-check ineffassign-check: @hash ineffassign > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go get -u github.com/gordonklaus/ineffassign; \ + go install $(GOFLAGS) github.com/gordonklaus/ineffassign; \ fi for S in $(GOFILES); do ineffassign $$S || exit 1; done; .PHONY: gocyclo-check gocyclo-check: @hash gocyclo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go get github.com/fzipp/gocyclo; \ + go install $(GOFLAGS) github.com/fzipp/gocyclo; \ fi for S in $(GOFILES); do gocyclo -over 14 $$S || exit 1; done; diff --git a/README.md b/README.md index c1399570..8e627037 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ Try it under [try.vikunja.io](https://try.vikunja.io)! ## Development +We use go modules to vendor libraries for Vikunja, so you'll need at least go `1.11`. + To contribute to Vikunja, fork the project and work on the master branch. Some internal packages are referenced using their respective package URL. This can become problematic. To “trick” the Go tool into thinking this is a clone from the official repository, download the source code into `$GOPATH/code.vikunja.io/api`. Fork the Vikunja repository, it should then be possible to switch the source directory on the command line. @@ -44,7 +46,7 @@ To be able to create pull requests, the forked repository should be added as a r ```bash git remote rename origin upstream -git remote add origin git@git.kolaente.de:/vikunja.git +git remote add origin git@git.kolaente.de:/api.git git fetch --all --prune ``` diff --git a/go.mod b/go.mod index 893ef905..0df9f188 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,10 @@ module code.vikunja.io/api require ( cloud.google.com/go v0.30.0 // indirect github.com/BurntSushi/toml v0.3.1 // indirect + github.com/client9/misspell v0.3.4 github.com/denisenkom/go-mssqldb v0.0.0-20180901172138-1eb28afdf9b6 // indirect github.com/dgrijalva/jwt-go v0.0.0-20170608005149-a539ee1a749a + github.com/fzipp/gocyclo v0.0.0-20150627053110-6acd4345c835 github.com/garyburd/redigo v1.6.0 // indirect github.com/go-openapi/analysis v0.17.2 // indirect github.com/go-openapi/errors v0.17.2 // indirect @@ -16,17 +18,19 @@ require ( github.com/go-openapi/swag v0.17.2 // indirect github.com/go-openapi/validate v0.17.2 // indirect github.com/go-sql-driver/mysql v0.0.0-20171007150158-ee359f95877b - github.com/go-swagger/go-swagger v0.17.2 // indirect + github.com/go-swagger/go-swagger v0.17.2 github.com/go-xorm/builder v0.0.0-20170519032130-c8871c857d25 // indirect github.com/go-xorm/core v0.5.8 github.com/go-xorm/tests v0.5.6 // indirect github.com/go-xorm/xorm v0.0.0-20170930012613-29d4a0330a00 github.com/go-xorm/xorm-redis-cache v0.0.0-20180727005610-859b313566b2 github.com/google/go-cmp v0.2.0 // indirect + github.com/gordonklaus/ineffassign v0.0.0-20180909121442-1003c8bd00dc github.com/gorilla/handlers v1.4.0 // indirect github.com/imdario/mergo v0.3.6 github.com/jessevdk/go-flags v1.4.0 // indirect github.com/joho/godotenv v1.3.0 // indirect + github.com/karalabe/xgo v0.0.0-20181007145344-72da7d1d3970 github.com/kr/pretty v0.1.0 // indirect github.com/labstack/echo v3.1.0+incompatible github.com/labstack/gommon v0.0.0-20170925052817-57409ada9da0 @@ -43,6 +47,7 @@ require ( github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4 // indirect github.com/ziutek/mymysql v1.5.4 // indirect golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44 + golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3 golang.org/x/tools v0.0.0-20181026183834-f60e5f99f081 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df diff --git a/go.sum b/go.sum index 71bea4b5..c1897597 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,8 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf h1:eg0MeVzsP1G42dRafH3vf+al2vQIJU0YHX+1Tw87oco= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/denisenkom/go-mssqldb v0.0.0-20180901172138-1eb28afdf9b6 h1:BZGp1dbKFjqlGmxEpwkDpCWNxVwEYnUPoncIzLiHlPo= @@ -17,6 +19,8 @@ github.com/dgrijalva/jwt-go v0.0.0-20170608005149-a539ee1a749a/go.mod h1:E3ru+11 github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fzipp/gocyclo v0.0.0-20150627053110-6acd4345c835 h1:roDmqJ4Qes7hrDOsWsMCce0vQHz3xiMPjJ9m4c2eeNs= +github.com/fzipp/gocyclo v0.0.0-20150627053110-6acd4345c835/go.mod h1:BjL/N0+C+j9uNX+1xcNuM9vdSIcXCZrQZUYbXOFbgN8= github.com/garyburd/redigo v1.6.0 h1:0VruCpn7yAIIu7pWVClQC8wxCJEcG3nyzpMSHKi1PQc= github.com/garyburd/redigo v1.6.0/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb h1:D4uzjWwKYQ5XnAvUbuvHW93esHg7F8N/OYeBBcJoTr0= @@ -69,6 +73,8 @@ github.com/go-xorm/xorm-redis-cache v0.0.0-20180727005610-859b313566b2/go.mod h1 github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gordonklaus/ineffassign v0.0.0-20180909121442-1003c8bd00dc h1:cJlkeAx1QYgO5N80aF5xRGstVsRQwgLR7uA2FnP1ZjY= +github.com/gordonklaus/ineffassign v0.0.0-20180909121442-1003c8bd00dc/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= github.com/gorilla/handlers v1.4.0 h1:XulKRWSQK5uChr4pEgSE4Tc/OcmnU9GJuSwdog/tZsA= github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -79,6 +85,8 @@ github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGAR github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/karalabe/xgo v0.0.0-20181007145344-72da7d1d3970 h1:0+1ZURVRim6FxA/jhWhJklsgoWc69q1sxlIu2Ztnhy0= +github.com/karalabe/xgo v0.0.0-20181007145344-72da7d1d3970/go.mod h1:iYGcTYIPUvEWhFo6aKUuLchs+AV4ssYdyuBbQJZGcBk= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -135,6 +143,8 @@ github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44 h1:9lP3x0pW80sDI6t1UMSLA4to18W7R7imwAI/sWS9S8Q= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3 h1:x/bBzNauLQAlE3fLku/xy92Y8QwKX5HZymrMz2IiKFc= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/net v0.0.0-20181005035420-146acd28ed58 h1:otZG8yDCO4LVps5+9bxOeNiCvgmOyt96J3roHTYs7oE= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/sys v0.0.0-20180906133057-8cf3aee42992 h1:BH3eQWeGbwRU2+wxxuuPOdFBmaiBH81O8BugSjHeTFg= diff --git a/models/mail/mail.go b/models/mail/mail.go index 70f14a55..c674948f 100644 --- a/models/mail/mail.go +++ b/models/mail/mail.go @@ -13,14 +13,14 @@ var Queue chan *gomail.Message // StartMailDaemon starts the mail daemon func StartMailDaemon() { + Queue = make(chan *gomail.Message, viper.GetInt("mailer.queuelength")) + if viper.GetString("mailer.host") == "" { //models.Log.Warning("Mailer seems to be not configured! Please see the config docs for more details.") fmt.Println("Mailer seems to be not configured! Please see the config docs for more details.") return } - Queue = make(chan *gomail.Message, viper.GetInt("mailer.queuelength")) - go func() { d := gomail.NewDialer(viper.GetString("mailer.host"), viper.GetInt("mailer.port"), viper.GetString("mailer.username"), viper.GetString("mailer.password")) d.TLSConfig = &tls.Config{InsecureSkipVerify: viper.GetBool("mailer.skiptlsverify")} diff --git a/models/unit_tests.go b/models/unit_tests.go index 206b5af1..9b31d511 100644 --- a/models/unit_tests.go +++ b/models/unit_tests.go @@ -1,6 +1,7 @@ package models import ( + "code.vikunja.io/api/models/mail" "fmt" "github.com/go-xorm/core" "github.com/go-xorm/xorm" @@ -10,6 +11,10 @@ import ( "testing" ) +// IsTesting is set to true when we're running tests. +// We don't have a good solution to test email sending yet, so we disable email sending when testing +var IsTesting bool + // MainTest creates the test engine func MainTest(m *testing.M, pathToRoot string) { var err error @@ -19,6 +24,11 @@ func MainTest(m *testing.M, pathToRoot string) { os.Exit(1) } + IsTesting = true + + // Start the pseudo mail queue + mail.StartMailDaemon() + // Create test database PrepareTestDatabase() diff --git a/models/user_password_reset.go b/models/user_password_reset.go index b87b6de6..31371648 100644 --- a/models/user_password_reset.go +++ b/models/user_password_reset.go @@ -42,6 +42,11 @@ func UserPasswordReset(reset *PasswordReset) (err error) { return } + // Dont send a mail if we're testing + if IsTesting { + return + } + // Send a mail to the user to notify it his password was changed. data := map[string]interface{}{ "User": user, @@ -74,6 +79,11 @@ func RequestUserPasswordResetToken(tr *PasswordTokenRequest) (err error) { return } + // Dont send a mail if we're testing + if IsTesting { + return + } + data := map[string]interface{}{ "User": user, } diff --git a/models/user_test.go b/models/user_test.go index 59fd144e..e7975f6f 100644 --- a/models/user_test.go +++ b/models/user_test.go @@ -122,7 +122,7 @@ func TestCreateUser(t *testing.T) { func TestUserPasswordReset(t *testing.T) { // Request a new token tr := &PasswordTokenRequest{ - UserID: 1, + Username: "user1", } err := RequestUserPasswordResetToken(tr) assert.NoError(t, err) diff --git a/tools.go b/tools.go new file mode 100644 index 00000000..0c89e815 --- /dev/null +++ b/tools.go @@ -0,0 +1,14 @@ +// +build tools + +package tools + +// This file is needed for go mod to recognize the tools we use. + +import ( + _ "github.com/client9/misspell/cmd/misspell" + _ "github.com/fzipp/gocyclo" + _ "github.com/go-swagger/go-swagger/cmd/swagger" + _ "github.com/gordonklaus/ineffassign" + _ "github.com/karalabe/xgo" + _ "golang.org/x/lint/golint" +)