func InstanceGetSuccess()

in internal/mock/sqladmin.go [104:151]


func InstanceGetSuccess(i FakeCSQLInstance, ct int) *Request {
	r := &Request{
		reqMethod: http.MethodGet,
		reqPath:   fmt.Sprintf("/sql/v1beta4/projects/%s/instances/%s/connectSettings", i.project, i.name),
		reqCt:     ct,
		handle: func(resp http.ResponseWriter, _ *http.Request) {
			// Calculate the response when the request occurs the response contains
			// up-to-date data stored in the FakeCSQLInstance.
			// This is especially important for the i.serverCACert().
			var ips []*sqladmin.IpMapping
			for ipType, addr := range i.ipAddrs {
				if ipType == "PUBLIC" {
					ips = append(ips, &sqladmin.IpMapping{IpAddress: addr, Type: "PRIMARY"})
					continue
				}
				if ipType == "PRIVATE" {
					ips = append(ips, &sqladmin.IpMapping{IpAddress: addr, Type: "PRIVATE"})
				}
			}

			certBytes, err := i.serverCACert()
			if err != nil {
				panic(err)
			}

			db := &sqladmin.ConnectSettings{
				BackendType:     i.backendType,
				DatabaseVersion: i.dbVersion,
				DnsNames:        i.DNSNames,
				DnsName:         i.DNSName,
				IpAddresses:     ips,
				Region:          i.region,
				ServerCaCert:    &sqladmin.SslCert{Cert: string(certBytes)},
				PscEnabled:      i.pscEnabled,
				ServerCaMode:    i.serverCAMode,
			}

			b, err := db.MarshalJSON()
			if err != nil {
				http.Error(resp, err.Error(), http.StatusInternalServerError)
				return
			}
			resp.WriteHeader(http.StatusOK)
			resp.Write(b)
		},
	}
	return r
}