diff --git a/lib-transactional-file-system/src/main/java/ch/ethz/sis/afs/manager/operation/CreateOperationExecutor.java b/lib-transactional-file-system/src/main/java/ch/ethz/sis/afs/manager/operation/CreateOperationExecutor.java index 76c03ee18870961f3f4d91b71b7acc33397aef51..1d690946d2943f508bd5ab95ee38ed22a9e245bb 100644 --- a/lib-transactional-file-system/src/main/java/ch/ethz/sis/afs/manager/operation/CreateOperationExecutor.java +++ b/lib-transactional-file-system/src/main/java/ch/ethz/sis/afs/manager/operation/CreateOperationExecutor.java @@ -38,11 +38,13 @@ public class CreateOperationExecutor implements OperationExecutor<CreateOperatio private static final CreateOperationExecutor INSTANCE; - static { + static + { INSTANCE = new CreateOperationExecutor(); } - private CreateOperationExecutor() { + private CreateOperationExecutor() + { } public static CreateOperationExecutor getInstance() { @@ -53,7 +55,6 @@ public class CreateOperationExecutor implements OperationExecutor<CreateOperatio // Operation // - @Override public boolean prepare(final @NonNull Transaction transaction, final CreateOperation operation) throws Exception { // Check that file/directory does not exist diff --git a/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/AbstractTransactionConnectionTest.java b/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/AbstractTransactionConnectionTest.java index c0bd1714f14b1c3d1501892a63c07c1f4677e041..52a01dc714a98aa82df211798f31bd8f11700fff 100644 --- a/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/AbstractTransactionConnectionTest.java +++ b/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/AbstractTransactionConnectionTest.java @@ -160,4 +160,9 @@ public abstract class AbstractTransactionConnectionTest extends AbstractTest { public boolean move(String source, String target) throws Exception { return transaction.move(source, target); } + + public boolean create(final String source, final boolean directory) throws Exception { + return transaction.create(source, directory); + } + } diff --git a/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/operation/CreateTransactionOperationTest.java b/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/operation/CreateTransactionOperationTest.java new file mode 100644 index 0000000000000000000000000000000000000000..69e8e7cda6cdd2612ce1a28e661aa7e42ceb5d48 --- /dev/null +++ b/lib-transactional-file-system/src/test/java/ch/ethz/sis/afs/manager/operation/CreateTransactionOperationTest.java @@ -0,0 +1,76 @@ +/* + * Copyright ETH 2023 Zürich, Scientific IT Services + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package ch.ethz.sis.afs.manager.operation; + +import static ch.ethz.sis.shared.io.IOUtils.getPath; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import ch.ethz.sis.afs.api.dto.File; +import ch.ethz.sis.shared.io.IOUtils; + +public class CreateTransactionOperationTest extends AbstractTransactionOperationTest +{ + + public static final String DIR_C = "C"; + + public static final String FILE_C = "C.txt"; + + public static final String DIR_C_PATH = IOUtils.PATH_SEPARATOR + getPath(DIR_C); + + public static final String FILE_C_PATH = IOUtils.PATH_SEPARATOR + getPath(DIR_C, FILE_C); + + @Override + public void operation() throws Exception { + create(FILE_C_PATH, false); + } + + @Test + public void operation_createFile_succeed() throws Exception { + begin(); + final String realPathC = OperationExecutor.getRealPath(getTransaction(), FILE_C_PATH); + create(FILE_C_PATH, false); + assertEquals(1, getTransaction().getOperations().size()); + assertFalse(IOUtils.exists(realPathC)); + prepare(); + commit(); + assertTrue(IOUtils.exists(realPathC)); + + final File file = IOUtils.getFile(realPathC); + assertFalse(file.getDirectory()); + } + + @Test + public void operation_createDirectory_succeed() throws Exception { + begin(); + final String realPathC = OperationExecutor.getRealPath(getTransaction(), DIR_C_PATH); + create(DIR_C_PATH, true); + assertEquals(1, getTransaction().getOperations().size()); + assertFalse(IOUtils.exists(realPathC)); + prepare(); + commit(); + assertTrue(IOUtils.exists(realPathC)); + + final File file = IOUtils.getFile(realPathC); + assertTrue(file.getDirectory()); + } + +}