func NewWithResponses()

in testutils/fakekms/fakekms.go [156:189]


func NewWithResponses(keyName string, port int, delay time.Duration, responses ...json.Marshaler) (*Server, error) {
	handle := func(req json.Marshaler) (json.Marshaler, int, error) {
		if len(responses) == 0 {
			return nil, http.StatusServiceUnavailable, errors.New("list of responses is empty")
		}

		status := http.StatusInternalServerError
		switch req.(type) {
		case *cloudkms.EncryptRequest:
			e, ok := responses[0].(*cloudkms.EncryptResponse)
			if !ok {
				return nil, status, errors.New("request for encrypt does not have a corresponding response of cloudkms.EncryptResponse")
			}
			status = e.HTTPStatusCode
		case *cloudkms.DecryptRequest:
			d, ok := responses[0].(*cloudkms.DecryptResponse)
			if !ok {
				return nil, status, errors.New("request for decrypt does not have a corresponding response of cloudkms.DecryptResponse")
			}
			status = d.HTTPStatusCode
		case *cloudkms.TestIamPermissionsRequest:
			t, ok := responses[0].(*cloudkms.TestIamPermissionsResponse)
			if !ok {
				return nil, status, errors.New("request for testIamPermissions does not have a corresponding response of cloudkms.TestIAMPermissionResponse")
			}
			status = t.HTTPStatusCode
		}
		r := responses[0]
		responses = responses[1:]
		return r, status, nil
	}

	return newWithCallback(keyName, port, delay, handle)
}