// Copyright 2017 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 ( "context" "fmt" "io/ioutil" "net" "net/http" "os" "path/filepath" "testing" "time" "code.gitea.io/git" "github.com/Unknwon/com" "github.com/stretchr/testify/assert" ) func onGiteaWebRun(t *testing.T, callback func(*testing.T, string)) { s := http.Server{ Handler: mac, } listener, err := net.Listen("tcp", "") assert.NoError(t, err) defer func() { ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) s.Shutdown(ctx) cancel() }() go s.Serve(listener) _, port, err := net.SplitHostPort(listener.Addr().String()) assert.NoError(t, err) callback(t, fmt.Sprintf("http://localhost:%s/", port)) } func TestClone_ViaHTTP_NoLogin(t *testing.T) { prepareTestEnv(t) onGiteaWebRun(t, func(t *testing.T, urlPrefix string) { dstPath, err := ioutil.TempDir("", "repo1") assert.NoError(t, err) defer os.RemoveAll(dstPath) err = git.Clone(fmt.Sprintf("%suser2/repo1.git", urlPrefix), dstPath, git.CloneRepoOptions{}) assert.NoError(t, err) assert.True(t, com.IsExist(filepath.Join(dstPath, "README.md"))) }) }