Context("on ubuntu when a new user is created", func() { BeforeEach(func() { testEnvironment.RunCommand("sudo groupadd bosh_sudoers") testEnvironment.RunCommand("sudo groupadd bosh_sshers") testEnvironment.RunCommand("sudo userdel -r username") }) AfterEach(func() { testEnvironment.RunCommand("sudo userdel -r username") }) It("should contain the correct home directory permissions", func() { err := agentClient.SSH("setup", action.SSHParams{ User: "******", PublicKey: "public-key", }) Expect(err).ToNot(HaveOccurred()) verifyFilePerm("755", "/var/vcap/bosh_ssh", testEnvironment) verifyFilePerm("700", "/var/vcap/bosh_ssh/username", testEnvironment) }) }) }) func verifyFilePerm(perm string, filePath string, testEnvironment *integration.TestEnvironment) { filePerms, err := testEnvironment.RunCommand("sudo stat -c '%a %n' " + filePath + " | cut -d' ' -f 1") Expect(err).NotTo(HaveOccurred()) Expect(strings.Trim(filePerms, "\n")).To(Equal(perm))
Context("when agent successfully executes ssh", func() { BeforeEach(func() { sshSuccess, err := json.Marshal(action.SSHResult{ Command: "setup", Status: "success", }) Expect(err).ToNot(HaveOccurred()) fakeHTTPClient.SetPostBehavior(string(sshSuccess), 200, nil) }) It("makes a POST request to the endpoint", func() { params := action.SSHParams{ User: "******", } err := agentClient.SSH("setup", params) Expect(err).ToNot(HaveOccurred()) Expect(fakeHTTPClient.PostInputs).To(HaveLen(1)) Expect(fakeHTTPClient.PostInputs[0].Endpoint).To(Equal("http://localhost:6305/agent")) var request AgentRequestMessage err = json.Unmarshal(fakeHTTPClient.PostInputs[0].Payload, &request) Expect(err).ToNot(HaveOccurred()) Expect(request).To(Equal(AgentRequestMessage{ Method: "ssh", Arguments: []interface{}{"setup", map[string]interface{}{"user_regex": "", "User": "******", "Password": "", "public_key": ""}}, ReplyTo: "fake-reply-to-uuid", }))