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)
|
||
|
}
|