diff --git a/pkg/filetransfer/handler_test.go b/pkg/filetransfer/handler_test.go index 0ceef38..d9215f9 100644 --- a/pkg/filetransfer/handler_test.go +++ b/pkg/filetransfer/handler_test.go @@ -68,13 +68,16 @@ func TestHandlerGet(t *testing.T) { func TestHandlerPut(t *testing.T) { gt := NewGomegaWithT(t) + tempdir, err := ioutil.TempDir("", "handler-put") gt.Expect(err).NotTo(HaveOccurred()) defer os.RemoveAll(tempdir) err = fs.CopyDir("testdata", tempdir) gt.Expect(err).NotTo(HaveOccurred()) - err = os.Mkdir(filepath.Join(tempdir, "no-perm"), 0555) + + noPermPath := filepath.Join(tempdir, "no-perm") + err = os.Mkdir(noPermPath, 0555) gt.Expect(err).NotTo(HaveOccurred()) tests := []struct { @@ -89,17 +92,28 @@ func TestHandlerPut(t *testing.T) { {path: "/new-file.txt", status: http.StatusCreated}, } - handler := &Handler{Root: tempdir, Username: "testuser", Password: "testpassword"} + handler := &Handler{ + Root: tempdir, + Username: "testuser", + Password: "testpassword", + } + for _, tt := range tests { t.Run(tt.path, func(t *testing.T) { gt := NewGomegaWithT(t) + if os.Geteuid() == 0 && tt.path == "/no-perm/file.txt" { + t.Skip("Skipping /no-perm/file.txt test when running as root") + } + req := httptest.NewRequest(http.MethodPut, tt.path, strings.NewReader("content")) req.SetBasicAuth("testuser", "testpassword") resp := httptest.NewRecorder() + handler.ServeHTTP(resp, req) - gt.Expect(resp.Code).To(Equal(tt.status)) + gt.Expect(resp.Code).To(Equal(tt.status), "unexpected status for path %s", tt.path) + if resp.Code == http.StatusCreated { newfile := filepath.Join(tempdir, tt.path) gt.Expect(newfile).To(BeARegularFile()) diff --git a/pkg/k8sbuilder/server.go b/pkg/k8sbuilder/server.go index 7e4b023..b00d712 100644 --- a/pkg/k8sbuilder/server.go +++ b/pkg/k8sbuilder/server.go @@ -552,6 +552,10 @@ func (b *Server) runPodDefinition(runContainer v1.Container, runMetadata *runMet } func (b *Server) hasZoneLabels() bool { + + if b == nil || b.NodeClient == nil { + return false + } nodes, err := b.NodeClient.List(context.TODO(), metav1.ListOptions{}) if err != nil { // If API call fails, better to assume zone labels are absent diff --git a/pkg/k8sbuilder/server_test.go b/pkg/k8sbuilder/server_test.go index 569fd80..d866407 100644 --- a/pkg/k8sbuilder/server_test.go +++ b/pkg/k8sbuilder/server_test.go @@ -495,6 +495,7 @@ func TestRunPodDefinition(t *testing.T) { }, } +pod.Spec.Affinity = affinity gt.Expect(pod).To(Equal(&v1.Pod{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{