From 51aacae3c55f88ddd2794df22abd2bcbca62a8ec Mon Sep 17 00:00:00 2001 From: Nicola Murino Date: Thu, 8 Aug 2019 21:42:07 +0200 Subject: [PATCH] version: only git commit and build date must be modifiable Improved some test cases too --- README.md | 11 +++++++++-- api/internal_test.go | 15 +++++++++++++++ api/router.go | 24 ++++++++++++++---------- sftpd/sftpd_test.go | 4 ++++ utils/version.go | 3 ++- 5 files changed, 44 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 4d7890eb..547c8645 100644 --- a/README.md +++ b/README.md @@ -45,10 +45,17 @@ Version info can be embedded populating the following variables at build time: - `github.com/drakkan/sftpgo/utils.commit` - `github.com/drakkan/sftpgo/utils.date` -For example on Linux you can build using the following ldflags: +For example you can build using the following command: ```bash --ldflags "-s -w -X github.com/drakkan/sftpgo/utils.commit=`git describe --tags --always --dirty` -X github.com/drakkan/sftpgo/utils.date=`date --utc +%FT%TZ`" +go build -i -ldflags "-s -w -X github.com/drakkan/sftpgo/utils.commit=`git describe --tags --always --dirty` -X github.com/drakkan/sftpgo/utils.date=`date --utc +%FT%TZ`" -o sftpgo +``` + +and you will get a version that includes git commit and build date like this one: + +```bash +./sftpgo -v +SFTPGo version: 0.9.0-dev-90607d4-dirty-2019-08-08T19:28:36Z ``` A systemd sample [service](https://github.com/drakkan/sftpgo/tree/master/init/sftpgo.service "systemd service") can be found inside the source tree. diff --git a/api/internal_test.go b/api/internal_test.go index e45a38fe..bd6b08db 100644 --- a/api/internal_test.go +++ b/api/internal_test.go @@ -1,11 +1,14 @@ package api import ( + "context" "fmt" "net/http" + "net/http/httptest" "testing" "github.com/drakkan/sftpgo/dataprovider" + "github.com/go-chi/chi" ) const ( @@ -211,3 +214,15 @@ func TestApiCallToNotListeningServer(t *testing.T) { } SetBaseURL(oldBaseURL) } + +func TestCloseSFTPConnectionHandler(t *testing.T) { + req, _ := http.NewRequest(http.MethodDelete, activeConnectionsPath+"/connectionID", nil) + rctx := chi.NewRouteContext() + rctx.URLParams.Add("connectionID", "") + req = req.WithContext(context.WithValue(req.Context(), chi.RouteCtxKey, rctx)) + rr := httptest.NewRecorder() + handleCloseSFTPConnection(rr, req) + if rr.Code != http.StatusBadRequest { + t.Errorf("Expected response code 400. Got %d", rr.Code) + } +} diff --git a/api/router.go b/api/router.go index f8e5a250..534f19e2 100644 --- a/api/router.go +++ b/api/router.go @@ -40,16 +40,7 @@ func initializeRouter() { }) router.Delete(activeConnectionsPath+"/{connectionID}", func(w http.ResponseWriter, r *http.Request) { - connectionID := chi.URLParam(r, "connectionID") - if connectionID == "" { - sendAPIResponse(w, r, nil, "connectionID is mandatory", http.StatusBadRequest) - return - } - if sftpd.CloseActiveConnection(connectionID) { - sendAPIResponse(w, r, nil, "Connection closed", http.StatusOK) - } else { - sendAPIResponse(w, r, nil, "Not Found", http.StatusNotFound) - } + handleCloseSFTPConnection(w, r) }) router.Get(quotaScanPath, func(w http.ResponseWriter, r *http.Request) { @@ -80,3 +71,16 @@ func initializeRouter() { deleteUser(w, r) }) } + +func handleCloseSFTPConnection(w http.ResponseWriter, r *http.Request) { + connectionID := chi.URLParam(r, "connectionID") + if connectionID == "" { + sendAPIResponse(w, r, nil, "connectionID is mandatory", http.StatusBadRequest) + return + } + if sftpd.CloseActiveConnection(connectionID) { + sendAPIResponse(w, r, nil, "Connection closed", http.StatusOK) + } else { + sendAPIResponse(w, r, nil, "Not Found", http.StatusNotFound) + } +} diff --git a/sftpd/sftpd_test.go b/sftpd/sftpd_test.go index 27675ad6..503b379f 100644 --- a/sftpd/sftpd_test.go +++ b/sftpd/sftpd_test.go @@ -310,6 +310,10 @@ func TestSymlink(t *testing.T) { if err != nil { t.Errorf("error creating symlink: %v", err) } + err = client.Symlink(testFileName, testFileName+".link") + if err == nil { + t.Errorf("creating a symlink to an existing one must fail") + } err = client.Remove(testFileName + ".link") if err != nil { t.Errorf("error removing symlink: %v", err) diff --git a/utils/version.go b/utils/version.go index e05a7df6..25e1f8ea 100644 --- a/utils/version.go +++ b/utils/version.go @@ -1,7 +1,8 @@ package utils +const version = "0.9.0-dev" + var ( - version = "0.9.0-dev" commit = "" date = "" versionInfo VersionInfo