code: func (f *FakeDockerClient) PullImage(image string, auth dockertypes.AuthConfig, opts dockertypes.ImagePullOptions) error {
  	f.Lock()
  	defer f.Unlock()
  	f.appendCalled(CalledDetail{name: "pull"})
  	err := f.popError("pull")
  	if err == nil {
  		if !f.isAuthorizedForImage(image, auth) {
  			return ImageNotFoundError{ID: image}
  		}
  
  		authJson, _ := json.Marshal(auth)
  		inspect := createImageInspectFromRef(image)
  		f.ImageInspects[image] = inspect
  		f.appendPulled(fmt.Sprintf("%s using %s", image, string(authJson)))
  		f.Images = append(f.Images, *createImageFromImageInspect(*inspect))
  		f.ImagesPulled = append(f.ImagesPulled, image)
  	}
  	return err
  }
docs: // PullImage is a test-spy implementation of Interface.PullImage.
  // It adds an entry "pull" to the internal method call record.