@Test public void testFinishWrite_success() throws Exception { doCallRealMethod().when(reader).finishWrite(any(FileOutputStream.class)); when(workFile.renameTo(activeFile)).thenReturn(true); try { reader.finishWrite(fos); Mockito.verify(fos).close(); } catch (IOException e) { fail("Successful rename commits transaction"); } }
@Test public void testFinishWrite_renameFailure() throws Exception { doCallRealMethod().when(reader).finishWrite(any(FileOutputStream.class)); doNothing().when(reader).failWrite(any(FileOutputStream.class)); when(workFile.renameTo(activeFile)).thenReturn(false); try { reader.finishWrite(fos); Mockito.verify(fos).close(); Mockito.verify(reader).failWrite(fos); fail("Failing rename should fail finish"); } catch (IOException e) { assertTrue(e.getMessage() + "wrong", e.getMessage().contains("Cannot commit")); } }
@Test public void testFinishWrite_closeFailure() throws Exception { doCallRealMethod().when(reader).finishWrite(any(FileOutputStream.class)); doNothing().when(reader).failWrite(any(FileOutputStream.class)); doThrow(new IOException("Not closing")).when(fos).close(); when(workFile.renameTo(activeFile)).thenReturn(true); try { reader.finishWrite(fos); Mockito.verify(fos).close(); Mockito.verify(reader).failWrite(fos); fail("Failing close should fail finish"); } catch (IOException e) { assertTrue(e.getMessage() + "wrong", e.getMessage().contains("Not closing")); } }
@Test public void testFailWrite() throws Exception { doCallRealMethod().when(reader).finishWrite(any(FileOutputStream.class)); doCallRealMethod().when(reader).failWrite(any(FileOutputStream.class)); when(workFile.delete()).thenReturn(true); try { reader.failWrite(fos); } catch (Exception e) { fail("Should not throw"); } when(workFile.delete()).thenReturn(false); try { reader.failWrite(fos); fail("Should throw"); } catch (Exception e) { // pass } }
@Test public void testCheckNodeForTree() throws Exception { List<RepositoryFileTree> children = new ArrayList<>(); IPathConversionHelper pathConversionHelper = new DefaultPathConversionHelper(); ILockHelper lockHelperMock = mock( ILockHelper.class ); IRepositoryAccessVoterManager repositoryAccessVoterManagerMock = mock( IRepositoryAccessVoterManager.class ); MutableBoolean foundFiltered = new MutableBoolean(); RepositoryFile fileMock = mock( RepositoryFile.class ); when( fileMock.getId() ).thenReturn( 1 ); PowerMockito.mockStatic( JcrRepositoryFileUtils.class ); PowerMockito.mockStatic( JcrRepositoryFileAclUtils.class ); PowerMockito.doCallRealMethod().when( JcrRepositoryFileUtils.class, "checkNodeForTree", nodeMock, children, sessionMock, pJcrConstMock, pathConversionHelper, "childNodeFilter", lockHelperMock, 0, false, repositoryAccessVoterManagerMock, RepositoryRequest.FILES_TYPE_FILTER.FOLDERS, foundFiltered, true, false, "/" ); when( JcrRepositoryFileUtils.nodeToFile( sessionMock, pJcrConstMock, pathConversionHelper, lockHelperMock, nodeMock ) ).thenReturn( fileMock ); when( JcrRepositoryFileUtils.isSupportedNodeType( pJcrConstMock, nodeMock ) ).thenReturn( true ); when( JcrRepositoryFileAclUtils.getAcl( sessionMock, pJcrConstMock, 1 ) ).thenThrow( new AccessDeniedException() ); try { JcrRepositoryFileUtils.checkNodeForTree( nodeMock, children, sessionMock, pJcrConstMock, pathConversionHelper, "childNodeFilter", lockHelperMock, 0, false, repositoryAccessVoterManagerMock, RepositoryRequest.FILES_TYPE_FILTER.FOLDERS, foundFiltered, true, false, "/" ); } catch ( Exception e ) { fail(); } }