浏览代码

Merge pull request #246 from docker/fix_err_context_create

Fix err context create
Guillaume Tardif 5 年之前
父节点
当前提交
a72ba8a6a9
共有 3 个文件被更改,包括 12 次插入3 次删除
  1. 6 2
      azure/login/login.go
  2. 5 0
      azure/login/login_test.go
  3. 1 1
      cli/cmd/context/createaci.go

+ 6 - 2
azure/login/login.go

@@ -181,13 +181,17 @@ func toOAuthToken(token azureToken) oauth2.Token {
 
 // NewAuthorizerFromLogin creates an authorizer based on login access token
 func NewAuthorizerFromLogin() (autorest.Authorizer, error) {
-	login, err := NewAzureLoginService()
+	return newAuthorizerFromLoginStorePath(getTokenStorePath())
+}
+
+func newAuthorizerFromLoginStorePath(storeTokenPath string) (autorest.Authorizer, error) {
+	login, err := newAzureLoginServiceFromPath(storeTokenPath, azureAPIHelper{})
 	if err != nil {
 		return nil, err
 	}
 	oauthToken, err := login.GetValidToken()
 	if err != nil {
-		return nil, err
+		return nil, errors.Wrap(err, "not logged in to azure, you need to run \"docker login azure\" first")
 	}
 
 	token := adal.Token{

+ 5 - 0
azure/login/login_test.go

@@ -91,6 +91,11 @@ func (suite *LoginSuite) TestRefreshInValidToken() {
 	Expect(storedToken.Token.Expiry).To(BeTemporally(">", time.Now().Add(3500*time.Second)))
 }
 
+func (suite *LoginSuite) TestClearErrorMessageIfNotAlreadyLoggedIn() {
+	_, err := newAuthorizerFromLoginStorePath(filepath.Join(suite.dir, tokenStoreFilename))
+	Expect(err.Error()).To(ContainSubstring("not logged in to azure, you need to run \"docker login azure\" first"))
+}
+
 func (suite *LoginSuite) TestDoesNotRefreshValidToken() {
 	expiryDate := time.Now().Add(1 * time.Hour)
 	err := suite.azureLogin.tokenStore.writeLoginInfo(TokenInfo{

+ 1 - 1
cli/cmd/context/createaci.go

@@ -42,7 +42,7 @@ func createAciCommand() *cobra.Command {
 		RunE: func(cmd *cobra.Command, args []string) error {
 			contextData, description, err := getAciContextData(cmd.Context(), opts)
 			if err != nil {
-				return nil
+				return err
 			}
 			return createDockerContext(cmd.Context(), args[0], store.AciContextType, description, contextData)
 		},