Files
odo/pkg/project/project_test.go
anmolbabu 22b306d2ef Apply ComponentSettings as part of component push (#1360)
* Create ComponentSettings on `odo create` and apply on `odo push`

This PR does the following:
1. Create Component settings config as part of `odo create` using
   the flags passed.
2. As part of `odo push`, if component does not exist:
	i. Create it with config created in 1 above
       ii. Push source code to created component and build and deploy it
       Note: Push now creates project in config if non-existant
   else
	i. Apply config in local component config file
       ii. Push source code to created component and build and deploy it
   and update the type of component if config changed
3. Add `context` as a flag to `odo create` and `odo push` to indicate
   directory that is expected to contain the component config file.
4. Deprecate application#set, get and create
5. Fixes UTs and e2e relevant to this PR and comments out un-relevant
   tests(includign mainly those that are known to broken and expected
   to fixed by subsequent issues labelled "new workflow")
   e2e credits: amitkrout <amit.silicon2008@gmail.com>

fixes #1366 #1372 #1373
Signed-off-by: anmolbabu <anmolbudugutta@gmail.com>

* Fix main and component e2e tests

Signed-off-by: anmolbabu <anmolbudugutta@gmail.com>

* Resolved component creation without application

* removed DS store

* fixed component e2e tests

* Fix e2e tests

Commit credits: amitkrout <amit.silicon2008@gmail.com>

Signed-off-by: amitkrout <amit.silicon2008@gmail.com>

* Make project creation test wait for project to appear in list

Signed-off-by: anmolbabu <anmolbudugutta@gmail.com>

* Fix more e2e tests

Signed-off-by: anmolbabu <anmolbudugutta@gmail.com>

* Incoporate @cdrage comments

Signed-off-by: anmolbabu <anmolbudugutta@gmail.com>

* Fix login tests

Signed-off-by: anmolbabu <anmolbudugutta@gmail.com>

* commented out oc project -q to check if it resolves java e2e
2019-03-25 23:57:55 -07:00

97 lines
2.9 KiB
Go

package project
import (
"os"
"testing"
"github.com/openshift/odo/pkg/occlient"
"github.com/openshift/odo/pkg/testingutil"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
ktesting "k8s.io/client-go/testing"
"k8s.io/client-go/tools/clientcmd"
)
func TestDelete(t *testing.T) {
tests := []struct {
name string
wantErr bool
projectName string
}{
{
name: "Test project delete for multiple projects",
wantErr: false,
projectName: "prj2",
},
{
name: "Test delete the only remaining project",
wantErr: false,
projectName: "testing",
},
}
odoConfigFile, kubeConfigFile, err := testingutil.SetUp(
testingutil.ConfigDetails{
FileName: "odo-test-config",
Config: testingutil.FakeOdoConfig("odo-test-config", false, ""),
ConfigPathEnv: "GLOBALODOCONFIG",
}, testingutil.ConfigDetails{
FileName: "kube-test-config",
Config: testingutil.FakeKubeClientConfig(),
ConfigPathEnv: "KUBECONFIG",
},
)
defer testingutil.CleanupEnv([]*os.File{odoConfigFile, kubeConfigFile}, t)
if err != nil {
t.Errorf("failed to create mock odo and kube config files. Error %v", err)
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Fake the client with the appropriate arguments
client, fakeClientSet := occlient.FakeNew()
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
configOverrides := &clientcmd.ConfigOverrides{}
client.KubeConfig = clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, configOverrides)
client.Namespace = "testing"
fkWatch := watch.NewFake()
fakeClientSet.ProjClientset.PrependReactor("list", "projects", func(action ktesting.Action) (bool, runtime.Object, error) {
if tt.name == "Test delete the only remaining project" {
return true, testingutil.FakeOnlyOneExistingProjects(), nil
}
return true, testingutil.FakeProjects(), nil
})
fakeClientSet.ProjClientset.PrependReactor("delete", "projects", func(action ktesting.Action) (bool, runtime.Object, error) {
return true, nil, nil
})
go func() {
fkWatch.Delete(testingutil.FakeProjectStatus(corev1.NamespacePhase(""), tt.projectName))
}()
fakeClientSet.ProjClientset.PrependWatchReactor("projects", func(action ktesting.Action) (handled bool, ret watch.Interface, err error) {
return true, fkWatch, nil
})
// The function we are testing
err := Delete(client, tt.projectName)
if err == nil && !tt.wantErr {
if len(fakeClientSet.ProjClientset.Actions()) != 2 {
t.Errorf("expected 2 ProjClientSet.Actions() in Project Delete, got: %v", len(fakeClientSet.ProjClientset.Actions()))
}
}
// Checks for error in positive cases
if !tt.wantErr == (err != nil) {
t.Errorf("project Delete() unexpected error %v, wantErr %v", err, tt.wantErr)
}
})
}
}