// Copyright 2019 The Gitea Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. package integrations import ( "archive/zip" "bytes" "io/ioutil" "net/http" "net/http/httptest" "testing" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/lfs" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/routers/routes" gzipp "github.com/klauspost/compress/gzip" "github.com/stretchr/testify/assert" ) var lfsID = int64(20000) func storeObjectInRepo(t *testing.T, repositoryID int64, content *[]byte) string { pointer, err := lfs.GeneratePointer(bytes.NewReader(*content)) assert.NoError(t, err) var lfsMetaObject *models.LFSMetaObject if setting.Database.UsePostgreSQL { lfsMetaObject = &models.LFSMetaObject{ID: lfsID, Pointer: pointer, RepositoryID: repositoryID} } else { lfsMetaObject = &models.LFSMetaObject{Pointer: pointer, RepositoryID: repositoryID} } lfsID++ lfsMetaObject, err = models.NewLFSMetaObject(lfsMetaObject) assert.NoError(t, err) contentStore := lfs.NewContentStore() exist, err := contentStore.Exists(pointer) assert.NoError(t, err) if !exist { err := contentStore.Put(pointer, bytes.NewReader(*content)) assert.NoError(t, err) } return pointer.Oid } func storeAndGetLfs(t *testing.T, content *[]byte, extraHeader *http.Header, expectedStatus int) *httptest.ResponseRecorder { repo, err := models.GetRepositoryByOwnerAndName("user2", "repo1") assert.NoError(t, err) oid := storeObjectInRepo(t, repo.ID, content) defer repo.RemoveLFSMetaObjectByOid(oid) session := loginUser(t, "user2") // Request OID req := NewRequest(t, "GET", "/user2/repo1.git/info/lfs/objects/"+oid+"/test") req.Header.Set("Accept-Encoding", "gzip") if extraHeader != nil { for key, values := range *extraHeader { for _, value := range values { req.Header.Add(key, value) } } } resp := session.MakeRequest(t, req, expectedStatus) return resp } func checkResponseTestContentEncoding(t *testing.T, content *[]byte, resp *httptest.ResponseRecorder, expectGzip bool) { contentEncoding := resp.Header().Get("Content-Encoding") if !expectGzip || !setting.EnableGzip { assert.NotContains(t, contentEncoding, "gzip") result := resp.Body.Bytes() assert.Equal(t, *content, result) } else { assert.Contains(t, contentEncoding, "gzip") gzippReader, err := gzipp.NewReader(resp.Body) assert.NoError(t, err) result, err := ioutil.ReadAll(gzippReader) assert.NoError(t, err) assert.Equal(t, *content, result) } } func TestGetLFSSmall(t *testing.T) { defer prepareTestEnv(t)() setting.CheckLFSVersion() if !setting.LFS.StartServer { t.Skip() return } content := []byte("A very small file\n") resp := storeAndGetLfs(t, &content, nil, http.StatusOK) checkResponseTestContentEncoding(t, &content, resp, false) } func TestGetLFSLarge(t *testing.T) { defer prepareTestEnv(t)() setting.CheckLFSVersion() if !setting.LFS.StartServer { t.Skip() return } content := make([]byte, routes.GzipMinSize*10) for i := range content { content[i] = byte(i % 256) } resp := storeAndGetLfs(t, &content, nil, http.StatusOK) checkResponseTestContentEncoding(t, &content, resp, true) } func TestGetLFSGzip(t *testing.T) { defer prepareTestEnv(t)() setting.CheckLFSVersion() if !setting.LFS.StartServer { t.Skip() return } b := make([]byte, routes.GzipMinSize*10) for i := range b { b[i] = byte(i % 256) } outputBuffer := bytes.NewBuffer([]byte{}) gzippWriter := gzipp.NewWriter(outputBuffer) gzippWriter.Write(b) gzippWriter.Close() content := outputBuffer.Bytes() resp := storeAndGetLfs(t, &content, nil, http.StatusOK) checkResponseTestContentEncoding(t, &content, resp, false) } func TestGetLFSZip(t *testing.T) { defer prepareTestEnv(t)() setting.CheckLFSVersion() if !setting.LFS.StartServer { t.Skip() return } b := make([]byte, routes.GzipMinSize*10) for i := range b { b[i] = byte(i % 256) } outputBuffer := bytes.NewBuffer([]byte{}) zipWriter := zip.NewWriter(outputBuffer) fileWriter, err := zipWriter.Create("default") assert.NoError(t, err) fileWriter.Write(b) zipWriter.Close() content := outputBuffer.Bytes() resp := storeAndGetLfs(t, &content, nil, http.StatusOK) checkResponseTestContentEncoding(t, &content, resp, false) } func TestGetLFSRangeNo(t *testing.T) { defer prepareTestEnv(t)() setting.CheckLFSVersion() if !setting.LFS.StartServer { t.Skip() return } content := []byte("123456789\n") resp := storeAndGetLfs(t, &content, nil, http.StatusOK) assert.Equal(t, content, resp.Body.Bytes()) } func TestGetLFSRange(t *testing.T) { defer prepareTestEnv(t)() setting.CheckLFSVersion() if !setting.LFS.StartServer { t.Skip() return } content := []byte("123456789\n") tests := []struct { in string out string status int }{ {"bytes=0-0", "1", http.StatusPartialContent}, {"bytes=0-1", "12", http.StatusPartialContent}, {"bytes=1-1", "2", http.StatusPartialContent}, {"bytes=1-3", "234", http.StatusPartialContent}, {"bytes=1-", "23456789\n", http.StatusPartialContent}, // end-range smaller than start-range is ignored {"bytes=1-0", "23456789\n", http.StatusPartialContent}, {"bytes=0-10", "123456789\n", http.StatusPartialContent}, // end-range bigger than length-1 is ignored {"bytes=0-11", "123456789\n", http.StatusPartialContent}, {"bytes=11-", "Requested Range Not Satisfiable", http.StatusRequestedRangeNotSatisfiable}, // incorrect header value cause whole header to be ignored {"bytes=-", "123456789\n", http.StatusOK}, {"foobar", "123456789\n", http.StatusOK}, } for _, tt := range tests { t.Run(tt.in, func(t *testing.T) { h := http.Header{ "Range": []string{tt.in}, } resp := storeAndGetLfs(t, &content, &h, tt.status) assert.Equal(t, tt.out, resp.Body.String()) }) } } ated/noid/master-update-code-signing-crl'>automated/noid/master-update-code-signing-crl Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
aboutsummaryrefslogtreecommitdiffstats
path: root/apps/federation/l10n/da.js
blob: 5445cfb366a21074eb2d354445264867546c7d0b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
OC.L10N.register(
    "federation",
    {
    "Added to the list of trusted servers" : "Tilføjet listen af godkendte servere",
    "Server is already in the list of trusted servers." : "Serveren står allerede på listen over sikre servere",
    "No server to federate with found" : "Ingen server at forbinde til blev fundet",
    "Could not add server" : "Kunne ikke tilføje server",
    "Trusted servers" : "Pålidelige servere",
    "Federation" : "Datafællesskab",
    "+ Add trusted server" : "+ Tilføj pålidelig server",
    "Trusted server" : "Pålidelig server",
    "Add" : "Tilføj",
    "Federation allows you to connect with other trusted servers to exchange the user directory." : "Datafællesskab gør dig i stand til at forbinde med andre serveren du stoler på og udveksle brugerdatabaser.",
    "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federation gør dig i stand til at forbinde med andre serveren du stoler på og udveksle brugerdatabaser. F. eks. dette kan blive bruge til at auto complete  eksterne brugere når du laver federated deling.",
    "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share." : "Federation giver dig mulighed for at oprette forbindelse til andre betroede servere for at udveksle brugerkataloget. For eksempel vil dette blive brugt til automatisk at udfylde eksterne brugere til fødereret deling. Det er ikke nødvendigt at tilføje en server som betroet server for at oprette en sammensat deling."
},
"nplurals=2; plural=(n != 1);");