mirror of https://github.com/knative/func.git
97 lines
2.2 KiB
Go
97 lines
2.2 KiB
Go
//go:build oncluster
|
|
|
|
package oncluster
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"gotest.tools/v3/assert"
|
|
"knative.dev/func/test/common"
|
|
)
|
|
|
|
func setupRemoteRepository(t *testing.T) (reposutoryUrl string) {
|
|
|
|
repositoryPath := filepath.Join(t.TempDir(), "repository")
|
|
helloTemplatePath := filepath.Join(repositoryPath, "go", "testhello")
|
|
|
|
createFolder := func(folderPath string) {
|
|
e := os.MkdirAll(folderPath, 0755)
|
|
if e != nil {
|
|
t.Error(e.Error())
|
|
}
|
|
}
|
|
createFile := func(path string, content string) {
|
|
e := os.WriteFile(path, []byte(content), 0644)
|
|
if e != nil {
|
|
t.Error(e.Error())
|
|
}
|
|
}
|
|
|
|
createFolder(helloTemplatePath)
|
|
createFolder(filepath.Join(helloTemplatePath, "hello"))
|
|
|
|
createFile(filepath.Join(helloTemplatePath, "go.mod"), `
|
|
module function
|
|
go 1.21
|
|
`)
|
|
createFile(filepath.Join(helloTemplatePath, "handle.go"), `
|
|
package function
|
|
|
|
import (
|
|
"fmt"
|
|
"function/hello"
|
|
"net/http"
|
|
)
|
|
|
|
func Handle(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Add("Content-Type", "text/plain")
|
|
fmt.Fprintf(w, hello.Hello("TEST")+"\n") // "HELLO TEST""
|
|
}
|
|
`)
|
|
|
|
createFile(filepath.Join(helloTemplatePath, "hello", "hello.go"), `
|
|
package hello
|
|
func Hello(name string) string {
|
|
return "HELLO " + name
|
|
}
|
|
`)
|
|
gitServer := common.GetGitServer(t)
|
|
remoteRepo := gitServer.CreateRepository("hello")
|
|
t.Cleanup(func() {
|
|
gitServer.DeleteRepository("hello")
|
|
})
|
|
|
|
GitInitialCommitAndPush(t, repositoryPath, remoteRepo.ExternalCloneURL)
|
|
|
|
return remoteRepo.ExternalCloneURL
|
|
}
|
|
|
|
// TestRemoteRepository verifies function created using an
|
|
// external template from a git repository
|
|
func TestRemoteRepository(t *testing.T) {
|
|
|
|
var funcName = "remote-repo-function"
|
|
var funcPath = filepath.Join(t.TempDir(), funcName)
|
|
|
|
gitRepoUrl := setupRemoteRepository(t)
|
|
|
|
knFunc := common.NewKnFuncShellCli(t)
|
|
knFunc.Exec("create",
|
|
"--language", "go",
|
|
"--template", "testhello",
|
|
"--repository", gitRepoUrl+"#main", // enforce branch to be used
|
|
funcPath)
|
|
|
|
knFunc.SourceDir = funcPath
|
|
|
|
knFunc.Exec("deploy", "--registry", common.GetRegistry(), "--remote")
|
|
defer knFunc.Exec("delete")
|
|
|
|
result := knFunc.Exec("invoke", "-p", funcPath)
|
|
assert.Assert(t, strings.Contains(result.Out, "HELLO TEST"))
|
|
|
|
}
|