diff --git a/.drone.yml b/.drone.yml index 8c9386e4..916338a5 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,6 +1,41 @@ pipeline: - publish_docker: - group: release + test: + image: golang + environment: + - GOPATH=/drone/ + - CGO_LDFLAGS_ALLOW='-fopenmp' + commands: + - cd server + - rm -rf plugin + - go get -t ./... + - go build + - go test -v ./... + + build: + image: docker + volumes: + - /var/run/docker.sock:/var/run/docker.sock + when: + branch: master + commands: + - docker pull alpine:latest + - docker build --no-cache -t machines/nuage docker/prod + + integration: + image: docker + volumes: + - /var/run/docker.sock:/var/run/docker.sock + when: + branch: master + commands: + - docker rm -f integration_filestash_app || true + - docker rm -f integration_filestash_test || true + - docker run --detach --name integration_filestash_app machines/nuage + - sleep 10 + - pwd + - ls -lah + + release: image: docker secrets: [ docker_username, docker_password ] volumes: @@ -9,6 +44,16 @@ pipeline: branch: master commands: - echo $DOCKER_PASSWORD | docker login -u=$DOCKER_USERNAME --password-stdin - - docker pull alpine:latest - - docker build --no-cache -t machines/nuage docker/prod - - docker push machines/nuage \ No newline at end of file + - docker push machines/nuage + + deploy: + image: appleboy/drone-ssh + host: hal.kerjean.me + secrets: [ ssh_username, ssh_password ] + port: 22 + script: + - cd /app/filestash + - docker-compose pull + - docker-compose up -d + when: + branch: master \ No newline at end of file diff --git a/server/common/crypto_test.go b/server/common/crypto_test.go index 0b76ea5b..123e2228 100644 --- a/server/common/crypto_test.go +++ b/server/common/crypto_test.go @@ -20,14 +20,18 @@ func TestEncryptString(t *testing.T) { } func TestIDGeneration(t *testing.T) { - d := make(map[string]string) - d["foo"] = "bar" + session := make(map[string]string) + session["foo"] = "bar" + app := &App{ + Session: session, + Config: NewConfig(), + } - id1 := GenerateID(d) - d["user"] = "polo" - id2 := GenerateID(d) - d["doesn_t_matter"] = "N/A" - id3 := GenerateID(d) + id1 := GenerateID(app) + session["user"] = "polo" + id2 := GenerateID(app) + session["doesn_t_matter"] = "N/A" + id3 := GenerateID(app) assert.NotEqual(t, id1, id2) assert.Equal(t, id2, id3) diff --git a/server/main.go b/server/main.go index a822c445..ea4bac98 100644 --- a/server/main.go +++ b/server/main.go @@ -9,6 +9,7 @@ import ( "net/http" "net/http/pprof" "os" + "runtime/debug" "strconv" ) @@ -33,7 +34,10 @@ func Init(a *App) { r.Handle("/debug/pprof/heap", pprof.Handler("heap")) r.Handle("/debug/pprof/threadcreate", pprof.Handler("threadcreate")) r.Handle("/debug/pprof/block", pprof.Handler("block")) - r.Handle("/debug/pprof/heap", pprof.Handler("heap")) + r.HandleFunc("/debug/free", func(w http.ResponseWriter, r *http.Request) { + debug.FreeOSMemory() + w.Write([]byte("DONE")) + }) } // API diff --git a/server/model/files_test.go b/server/model/files_test.go index 68123ae6..43b435ba 100644 --- a/server/model/files_test.go +++ b/server/model/files_test.go @@ -1,10 +1,8 @@ package model import ( - //"fmt" . "github.com/mickael-kerjean/nuage/server/common" "io/ioutil" - //"os" "strings" "testing" ) @@ -14,11 +12,6 @@ var app *App func init() { app = &App{} app.Config = &Config{} - app.Config.Initialise() - app.Config.General.Host = "http://test" - app.Config.OAuthProvider.Dropbox.ClientID = "" - app.Config.OAuthProvider.GoogleDrive.ClientID = "" - app.Config.OAuthProvider.GoogleDrive.ClientID = "" } // func TestWebdav(t *testing.T) { @@ -97,22 +90,18 @@ func init() { // } // func TestS3(t *testing.T) { -// if os.Getenv("S3_ID") == "" || os.Getenv("S3_SECRET") == "" { -// fmt.Println("- skipped S3") -// return -// } // b, err := NewBackend(&App{}, map[string]string{ // "type": "s3", -// "access_key_id": os.Getenv("S3_ID"), -// "secret_access_key": os.Getenv("S3_SECRET"), -// "endpoint": os.Getenv("S3_ENDPOINT"), +// "access_key_id": "Q3AM3UQ867SPQQA43P2F", +// "secret_access_key": "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG", +// "endpoint": "https://play.minio.io:9000/", // }) // if err != nil { // t.Errorf("Can't create S3 backend") // } // setup(t, b) -// suite(t, b) -// tearDown(t, b) +// // suite(t, b) +// //tearDown(t, b) // } // func TestDropbox(t *testing.T) { diff --git a/server/model/share_test.go b/server/model/share_test.go index e4b99e10..9745bef7 100644 --- a/server/model/share_test.go +++ b/server/model/share_test.go @@ -15,7 +15,10 @@ var shareObj = Share{ CanRead: true, CanManageOwn: true, CanShare: true, - Expire: NewInt64(1537759505787), + Expire: func() *int64{ + a := int64(1537759505787) + return &a + }(), } @@ -34,7 +37,7 @@ func TestShareMultipleUpsert(t *testing.T) { err = ShareUpsert(&shareObj); assert.NoError(t, err) - err = ShareGet(&shareObj) + _, err = ShareGet(shareObj.Id) assert.NoError(t, err) } @@ -44,7 +47,7 @@ func TestShareUpsertIsProperlyInserted(t *testing.T) { var obj Share obj.Id = "foo" - err = ShareGet(&obj) + obj, err = ShareGet(obj.Id) assert.NoError(t, err) assert.NotNil(t, obj.Password) } @@ -55,7 +58,7 @@ func TestShareUpsertIsProperlyInserted(t *testing.T) { func TestShareGetNonExisting(t *testing.T) { var s Share = shareObj s.Id = "nothing" - err := ShareGet(&s); + _, err := ShareGet(s.Id); assert.Error(t, err, "Shouldn't be able to get something that doesn't exist yet") } @@ -63,7 +66,7 @@ func TestShareGetExisting(t *testing.T) { err := ShareUpsert(&shareObj); assert.NoError(t, err, "Upsert issue") - err = ShareGet(&shareObj); + _, err = ShareGet(shareObj.Id); assert.NoError(t, err) } @@ -74,7 +77,7 @@ func TestShareGetExistingMakeSureDataIsOk(t *testing.T) { var obj Share obj.Id = "foo" obj.Backend = shareObj.Backend - err = ShareGet(&obj); + obj, err = ShareGet(obj.Id); assert.NoError(t, err) assert.Equal(t, "foo", obj.Id) assert.Equal(t, "/var/www/", obj.Path) @@ -96,7 +99,7 @@ func TestShareListAll(t *testing.T) { assert.NoError(t, err, "Upsert issue") // Actual test - list, err := ShareList(&shareObj) + list, err := ShareList(shareObj.Backend, shareObj.Path) assert.NoError(t, err) assert.Len(t, list, 1) assert.NotNil(t, list[0].Password) @@ -110,14 +113,14 @@ func TestShareDeleteShares(t *testing.T) { // Initialise test err := ShareUpsert(&shareObj); assert.NoError(t, err, "Upsert issue") - err = ShareGet(&shareObj) + shareObj, err = ShareGet(shareObj.Id) assert.NoError(t, err) // Actual Test - err = ShareDelete(&shareObj); + err = ShareDelete(shareObj.Id); assert.NoError(t, err) - err = ShareGet(&shareObj) + _, err = ShareGet(shareObj.Id) assert.Error(t, err) } @@ -135,22 +138,22 @@ func TestShareVerifyEquivalence(t *testing.T) { Key: p1.Key, Id: "hash", } - res := ShareProofAreEquivalent(p1, p2) + res := shareProofAreEquivalent(p1, p2) assert.Equal(t, false, res) p2.Id = Hash(p1.Key + "::" + p1.Value) - res = ShareProofAreEquivalent(p1, p2) + res = shareProofAreEquivalent(p1, p2) assert.Equal(t, true, res) p2.Key = "email" - res = ShareProofAreEquivalent(p1, p2) + res = shareProofAreEquivalent(p1, p2) assert.Equal(t, false, res) p1.Key = "email" p1.Value = "test@gmail.com,polo@gmail.com,jean@gmail.com" p2.Key = "email" p2.Id = Hash(p1.Key + "::" + "polo@gmail.com") - res = ShareProofAreEquivalent(p1, p2) + res = shareProofAreEquivalent(p1, p2) assert.Equal(t, true, res) }