@Override
  public void remove(String noteId, String notePath, AuthenticationInfo subject) throws IOException {
    Preconditions.checkArgument(StringUtils.isNotEmpty(noteId));
    BlobId blobId = makeBlobId(noteId, notePath);
    try {
      boolean deleted = storage.delete(blobId);
      if (!deleted) {
        throw new IOException("Tried to remove nonexistent blob " + blobId.toString());
      }
    } catch (StorageException se) {
      throw new IOException("Could not remove " + blobId.toString() + ": " + se.getMessage(), se);
    }
  }
@Test
  void testRemove_nonexistent() throws Exception {
    zConf.setProperty(ConfVars.ZEPPELIN_NOTEBOOK_GCS_STORAGE_DIR.getVarName(), DEFAULT_URL);
    this.notebookRepo = new GCSNotebookRepo(zConf, noteParser, storage);
    assertThrows(IOException.class, () -> {
      notebookRepo.remove("id", "/name", AUTH_INFO);
    });
  }