1 package com.atlassian.activeobjects.confluence.backup;
2
3 import com.atlassian.activeobjects.spi.Backup;
4 import com.atlassian.activeobjects.spi.BackupProgressMonitor;
5 import com.atlassian.activeobjects.spi.HotRestartEvent;
6 import com.atlassian.activeobjects.spi.RestoreProgressMonitor;
7 import com.atlassian.activeobjects.spi.TransactionSynchronisationManager;
8 import com.atlassian.event.api.EventPublisher;
9 import org.junit.Before;
10 import org.junit.Test;
11 import org.junit.runner.RunWith;
12 import org.mockito.Mock;
13 import org.mockito.junit.MockitoJUnitRunner;
14
15 import java.io.InputStream;
16 import java.io.OutputStream;
17
18 import static org.mockito.ArgumentMatchers.any;
19 import static org.mockito.ArgumentMatchers.eq;
20 import static org.mockito.Mockito.mock;
21 import static org.mockito.Mockito.verify;
22 import static org.mockito.Mockito.when;
23
24 @RunWith(MockitoJUnitRunner.class)
25 public class ActiveObjectsBackupRestoreProviderTest {
26 @Mock
27 private Backup aoBackup;
28 @Mock
29 private EventPublisher eventPublisher;
30 @Mock
31 private TransactionSynchronisationManager tranSyncManager;
32 private ActiveObjectsBackupRestoreProvider provider;
33
34 @Before
35 public void setUp() {
36 provider = new ActiveObjectsBackupRestoreProvider();
37 provider.setBackup(aoBackup);
38 provider.setEventPublisher(eventPublisher);
39 provider.setTransactionSynchManager(tranSyncManager);
40 when(tranSyncManager.runOnSuccessfulCommit(any(Runnable.class))).thenAnswer(invocation -> {
41 ((Runnable) invocation.getArgument(0)).run();
42 return true;
43 });
44 }
45
46 @Test
47 public void testBackup() throws Exception {
48 OutputStream os = mock(OutputStream.class);
49
50 provider.backup(os);
51
52 verify(aoBackup).save(eq(os), any(BackupProgressMonitor.class));
53
54 }
55
56 @Test
57 public void testRestore() throws Exception {
58 InputStream is = mock(InputStream.class);
59
60 provider.restore(is);
61
62 verify(aoBackup).restore(eq(is), any(RestoreProgressMonitor.class));
63 verify(eventPublisher).publish(HotRestartEvent.INSTANCE);
64 }
65 }