MCPcopy
hub / github.com/apache/devlake / testConnection

Function testConnection

backend/plugins/sonarqube/api/connection_api.go:40–77  ·  view source on GitHub ↗
(ctx context.Context, connection models.SonarqubeConn)

Source from the content-addressed store, hash-verified

38}
39
40func testConnection(ctx context.Context, connection models.SonarqubeConn) (*plugin.ApiResourceOutput, errors.Error) {
41 // validate
42 if vld != nil {
43 if err := vld.Struct(connection); err != nil {
44 return nil, errors.Default.Wrap(err, "error validating target")
45 }
46 }
47 apiClient, err := api.NewApiClientFromConnection(ctx, basicRes, &connection)
48 if err != nil {
49 return nil, err
50 }
51
52 res, err := apiClient.Get("authentication/validate", nil, nil)
53 if err != nil {
54 return nil, err
55 }
56 switch res.StatusCode {
57 case 200: // right StatusCode
58 valid := &validation{}
59 err = api.UnmarshalResponse(res, valid)
60 if err != nil {
61 return nil, err
62 }
63 body := SonarqubeTestConnResponse{}
64 body.Success = true
65 body.Message = "success"
66 connection = connection.Sanitize()
67 body.Connection = &connection
68 if !valid.Valid {
69 return nil, errors.Default.New("Authentication failed, please check your access token.")
70 }
71 return &plugin.ApiResourceOutput{Body: body, Status: 200}, nil
72 case 401: // error secretKey or nonceStr
73 return &plugin.ApiResourceOutput{Body: false, Status: http.StatusBadRequest}, nil
74 default: // unknown what happen , back to user
75 return &plugin.ApiResourceOutput{Body: res.Body, Status: res.StatusCode}, nil
76 }
77}
78
79// TestConnection test sonarqube connection options
80// @Summary test sonarqube connection

Callers 2

TestConnectionFunction · 0.70
TestExistingConnectionFunction · 0.70

Calls 4

WrapMethod · 0.80
GetMethod · 0.65
NewMethod · 0.65
SanitizeMethod · 0.45

Tested by 2

TestConnectionFunction · 0.56
TestExistingConnectionFunction · 0.56