public void doTestRemove(
      StorageDomainType type, StorageType storageType, boolean format, boolean failure) {
    DbFacade db = setUpDB();
    expectGetStoragePool(db, STORAGE_POOL_ID);
    storage_domains dom =
        expectGetStorageDomain(db, STORAGE_DOMAIN_ID, STORAGE_POOL_ID, type, storageType);
    expectGetVds(db, VDS_ID);

    BackendInternal backend = null;

    if (storageType == StorageType.LOCALFS) {
      expectGetIsAttached(db, STORAGE_DOMAIN_ID, STORAGE_POOL_ID);
      if (backend == null) {
        backend = setUpBackend();
      }
      expectDetach(backend, STORAGE_DOMAIN_ID, STORAGE_POOL_ID);
    }

    if (format || (type != StorageDomainType.ISO && type != StorageDomainType.ImportExport)) {
      setUpStorageHelper(dom, storageType, true, failure);

      if (backend == null) {
        backend = setUpBackend();
      }

      VDSBrokerFrontend vdsBroker = expectFormat(setUpVdsBroker(backend), failure);

      if (storageType == StorageType.ISCSI) {
        expectRemove(vdsBroker);
      }

    } else {
      setUpStorageHelper(dom, storageType, false, false);
    }

    if (!failure) {
      expectRemoveFromDb(db, STORAGE_DOMAIN_ID);
    }

    expectBusinessEntitySnapshotDAO(db);

    expectConfigGetValue();

    RemoveStorageDomainCommand cmd = new RemoveStorageDomainCommand(getParams(format));
    cmd.executeCommand();

    checkSucceeded(cmd, !failure);
    checkMessages(cmd);
  }
  @Test
  public void testCanDoAction() {
    DbFacade db = setUpDB();
    expectGetStoragePool(db, STORAGE_POOL_ID);
    expectGetStorageDomain(
        db, STORAGE_DOMAIN_ID, STORAGE_POOL_ID, StorageDomainType.Data, StorageType.NFS);
    expectGetVds(db, VDS_ID);
    expectGetIsoMap(db, STORAGE_DOMAIN_ID);

    expectBusinessEntitySnapshotDAO(db);

    RemoveStorageDomainCommand cmd = new RemoveStorageDomainCommand(getParams(true));
    assertTrue(cmd.canDoAction());

    checkSucceeded(cmd, false);
    checkMessages(
        cmd, VdcBllMessages.VAR__TYPE__STORAGE__DOMAIN, VdcBllMessages.VAR__ACTION__REMOVE);
  }