mirror of https://github.com/portainer/portainer
65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
package stacks
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
type git struct {
|
|
content string
|
|
}
|
|
|
|
func (g *git) CloneRepository(destination string, repositoryURL, referenceName, username, password string) error {
|
|
return g.ClonePublicRepository(repositoryURL, referenceName, destination)
|
|
}
|
|
func (g *git) ClonePublicRepository(repositoryURL string, referenceName string, destination string) error {
|
|
return ioutil.WriteFile(path.Join(destination, "deployment.yml"), []byte(g.content), 0755)
|
|
}
|
|
func (g *git) ClonePrivateRepositoryWithBasicAuth(repositoryURL, referenceName string, destination, username, password string) error {
|
|
return g.ClonePublicRepository(repositoryURL, referenceName, destination)
|
|
}
|
|
|
|
func TestCloneAndConvertGitRepoFile(t *testing.T) {
|
|
dir, err := os.MkdirTemp("", "kube-create-stack")
|
|
assert.NoError(t, err, "failed to create a tmp dir")
|
|
defer os.RemoveAll(dir)
|
|
|
|
content := `apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: nginx-deployment
|
|
labels:
|
|
app: nginx
|
|
spec:
|
|
replicas: 3
|
|
selector:
|
|
matchLabels:
|
|
app: nginx
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: nginx
|
|
spec:
|
|
containers:
|
|
- name: nginx
|
|
image: nginx:1.14.2
|
|
ports:
|
|
- containerPort: 80`
|
|
|
|
h := &Handler{
|
|
GitService: &git{
|
|
content: content,
|
|
},
|
|
}
|
|
gitInfo := &kubernetesGitDeploymentPayload{
|
|
FilePathInRepository: "deployment.yml",
|
|
}
|
|
fileContent, err := h.cloneManifestContentFromGitRepo(gitInfo, dir)
|
|
assert.NoError(t, err, "failed to clone or convert the file from Git repo")
|
|
assert.Equal(t, content, fileContent)
|
|
}
|