github.com/arunkumar7540/cli@v6.45.0+incompatible/integration/shared/isolated/create_user_command_test.go (about) 1 package isolated 2 3 import ( 4 "code.cloudfoundry.org/cli/integration/helpers" 5 . "github.com/onsi/ginkgo" 6 . "github.com/onsi/ginkgo/extensions/table" 7 . "github.com/onsi/gomega" 8 . "github.com/onsi/gomega/gbytes" 9 . "github.com/onsi/gomega/gexec" 10 ) 11 12 var _ = Describe("create-user command", func() { 13 Describe("help", func() { 14 When("--help flag is set", func() { 15 It("Displays command usage to output", func() { 16 session := helpers.CF("create-user", "--help") 17 Eventually(session).Should(Say("NAME:")) 18 Eventually(session).Should(Say("create-user - Create a new user")) 19 Eventually(session).Should(Say("USAGE:")) 20 Eventually(session).Should(Say("cf create-user USERNAME PASSWORD")) 21 Eventually(session).Should(Say("cf create-user USERNAME --origin ORIGIN")) 22 Eventually(session).Should(Say("EXAMPLES:")) 23 Eventually(session).Should(Say(" cf create-user j.smith@example.com S3cr3t # internal user")) 24 Eventually(session).Should(Say(" cf create-user j.smith@example.com --origin ldap # LDAP user")) 25 Eventually(session).Should(Say(" cf create-user j.smith@example.com --origin provider-alias # SAML or OpenID Connect federated user")) 26 Eventually(session).Should(Say("OPTIONS:")) 27 Eventually(session).Should(Say("--origin Origin for mapping a user account to a user in an external identity provider")) 28 Eventually(session).Should(Say("SEE ALSO:")) 29 Eventually(session).Should(Say("passwd, set-org-role, set-space-role")) 30 Eventually(session).Should(Exit(0)) 31 }) 32 }) 33 }) 34 35 When("the environment is not setup correctly", func() { 36 It("fails with the appropriate errors", func() { 37 helpers.CheckEnvironmentTargetedCorrectly(false, false, ReadOnlyOrg, "create-user", "username", "password") 38 }) 39 }) 40 41 When("the environment is setup correctly", func() { 42 When("the logged in user is not authorized to create new users", func() { 43 var ( 44 newUser string 45 newPassword string 46 ) 47 48 BeforeEach(func() { 49 helpers.LoginCF() 50 noobUser := helpers.NewUsername() 51 noobPassword := helpers.NewPassword() 52 session := helpers.CF("create-user", noobUser, noobPassword) 53 Eventually(session).Should(Exit(0)) 54 55 env := map[string]string{ 56 "CF_USERNAME": noobUser, 57 "CF_PASSWORD": noobPassword, 58 } 59 session = helpers.CFWithEnv(env, "auth") 60 Eventually(session).Should(Exit(0)) 61 62 newUser = helpers.NewUsername() 63 newPassword = helpers.NewPassword() 64 }) 65 66 It("fails with insufficient scope error", func() { 67 session := helpers.CF("create-user", newUser, newPassword) 68 Eventually(session).Should(Say(`Creating user %s\.\.\.`, newUser)) 69 Eventually(session).Should(Say(`Error creating user %s\.`, newUser)) 70 Eventually(session.Err).Should(Say(`You are not authorized to perform the requested action\.`)) 71 Eventually(session).Should(Say("FAILED")) 72 Eventually(session).Should(Exit(1)) 73 }) 74 }) 75 76 When("the logged in user is authorized to create new users", func() { 77 BeforeEach(func() { 78 helpers.LoginCF() 79 }) 80 81 When("passed invalid username", func() { 82 DescribeTable("when passed funkyUsername", 83 func(funkyUsername string) { 84 session := helpers.CF("create-user", funkyUsername, helpers.NewPassword()) 85 Eventually(session).Should(Say("Error creating user %s.", funkyUsername)) 86 Eventually(session.Err).Should(Say("Username must match pattern: \\[\\\\p\\{L\\}\\+0\\-9\\+\\\\\\-_\\.@'!\\]\\+")) 87 Eventually(session).Should(Say("FAILED")) 88 Eventually(session).Should(Exit(1)) 89 }, 90 91 Entry("fails when passed an emoji", "😀"), 92 Entry("fails when passed a backtick", "`"), 93 ) 94 95 When("the username is empty", func() { 96 It("fails with a username must be provided error", func() { 97 session := helpers.CF("create-user", "", helpers.NewPassword()) 98 Eventually(session).Should(Say("Error creating user .")) 99 Eventually(session.Err).Should(Say("A username must be provided.")) 100 Eventually(session).Should(Say("FAILED")) 101 Eventually(session).Should(Exit(1)) 102 }) 103 }) 104 }) 105 106 When("the user passes in an origin flag", func() { 107 When("the origin is UAA", func() { 108 When("password is not present", func() { 109 It("errors and prints usage", func() { 110 newUser := helpers.NewUsername() 111 session := helpers.CF("create-user", newUser, "--origin", "UAA") 112 Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `PASSWORD` was not provided")) 113 Eventually(session).Should(Say("FAILED")) 114 Eventually(session).Should(Say("USAGE")) 115 Eventually(session).Should(Exit(1)) 116 }) 117 }) 118 }) 119 When("the origin is the empty string", func() { 120 When("password is not present", func() { 121 It("errors and prints usage", func() { 122 newUser := helpers.NewUsername() 123 session := helpers.CF("create-user", newUser, "--origin", "") 124 Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `PASSWORD` was not provided")) 125 Eventually(session).Should(Say("FAILED")) 126 Eventually(session).Should(Say("USAGE")) 127 Eventually(session).Should(Exit(1)) 128 }) 129 }) 130 }) 131 132 When("the origin is not UAA or empty", func() { 133 It("creates the new user in the specified origin", func() { 134 newUser := helpers.NewUsername() 135 session := helpers.CF("create-user", newUser, "--origin", "ldap") 136 Eventually(session).Should(Say("Creating user %s...", newUser)) 137 Eventually(session).Should(Say("OK")) 138 Eventually(session).Should(Say("TIP: Assign roles with 'cf set-org-role' and 'cf set-space-role'")) 139 Eventually(session).Should(Exit(0)) 140 }) 141 }) 142 143 When("argument for flag is not present", func() { 144 It("fails with incorrect usage error", func() { 145 session := helpers.CF("create-user", helpers.NewUsername(), "--origin") 146 Eventually(session.Err).Should(Say("Incorrect Usage: expected argument for flag `--origin'")) 147 Eventually(session).Should(Exit(1)) 148 }) 149 }) 150 }) 151 152 When("password is not present", func() { 153 It("fails with incorrect usage error", func() { 154 session := helpers.CF("create-user", helpers.NewUsername()) 155 Eventually(session.Err).Should(Say("Incorrect Usage: the required argument `PASSWORD` was not provided")) 156 Eventually(session).Should(Say("FAILED")) 157 Eventually(session).Should(Say("USAGE")) 158 Eventually(session).Should(Exit(1)) 159 }) 160 }) 161 162 When("the user already exists", func() { 163 var ( 164 newUser string 165 newPassword string 166 ) 167 168 BeforeEach(func() { 169 newUser = helpers.NewUsername() 170 newPassword = helpers.NewPassword() 171 session := helpers.CF("create-user", newUser, newPassword) 172 Eventually(session).Should(Exit(0)) 173 }) 174 175 It("fails with the user already exists message", func() { 176 session := helpers.CF("create-user", newUser, newPassword) 177 Eventually(session.Err).Should(Say("user %s already exists", newUser)) 178 Eventually(session).Should(Say("OK")) 179 Eventually(session).Should(Exit(0)) 180 }) 181 }) 182 183 When("the user does not already exist", func() { 184 It("creates the new user", func() { 185 newUser := helpers.NewUsername() 186 newPassword := helpers.NewPassword() 187 session := helpers.CF("create-user", newUser, newPassword) 188 Eventually(session).Should(Say("Creating user %s...", newUser)) 189 Eventually(session).Should(Say("OK")) 190 Eventually(session).Should(Say("TIP: Assign roles with 'cf set-org-role' and 'cf set-space-role'")) 191 Eventually(session).Should(Exit(0)) 192 }) 193 }) 194 }) 195 }) 196 })