]> source.dussan.org Git - archiva.git/blob
164b5e6db7fc14e5444d8664f8a2b8f203f20d94
[archiva.git] /
1 package org.apache.archiva.transaction;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *   http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.junit.After;
23 import org.junit.Before;
24 import org.junit.Test;
25
26 import java.io.IOException;
27 import java.nio.file.Files;
28 import java.nio.file.Path;
29 import java.nio.file.Paths;
30
31 /**
32  */
33 public class CopyFileEventTest
34     extends AbstractFileEventTest
35 {
36     private Path testDir = Paths.get(org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/transaction-tests/copy-file");
37
38     private Path testDest = testDir.resolve( "test-file.txt" );
39
40     private Path testSource = Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/transaction-tests/test-file.txt" );
41
42     private Path testDestChecksum;
43
44     private String source, oldChecksum;
45
46     @Override
47     @Before
48     public void setUp()
49         throws Exception
50     {
51         super.setUp();
52
53         Files.createDirectories(testSource.getParent());
54
55         Files.createFile(testSource);
56
57         writeFile( testSource, "source contents" );
58
59         testDestChecksum = Paths.get( testDest.toAbsolutePath() + ".sha1" );
60
61         Files.createDirectories(testDestChecksum.getParent());
62
63         Files.createFile(testDestChecksum);
64
65         writeFile( testDestChecksum, "this is the checksum" );
66
67         assertTrue( "Test if the source exists", Files.exists(testSource) );
68
69         assertTrue( "Test if the destination checksum exists", Files.exists(testDestChecksum) );
70
71         source = readFile( testSource );
72
73         oldChecksum = readFile( testDestChecksum );
74     }
75     
76     @Test
77     public void testCopyCommitRollback()
78         throws Exception
79     {
80         CopyFileEvent event = new CopyFileEvent( testSource, testDest, digesters );
81
82         assertFalse( "Test that the destination is not yet created", Files.exists(testDest) );
83
84         event.commit();
85
86         assertTrue( "Test that the destination is created", Files.exists(testDest) );
87
88         assertChecksumCommit( testDest );
89
90         String target = readFile( testDest );
91
92         assertTrue( "Test that the destination contents are copied correctly", source.equals( target ) );
93
94         event.rollback();
95
96         assertFalse( "Test that the destination file has been deleted", Files.exists(testDest) );
97
98         assertChecksumRollback( testDest );
99     }
100
101     @Test
102     public void testCopyCommitRollbackWithBackup()
103         throws Exception
104     {
105         Files.createDirectories(testDest.getParent());
106
107         Files.createFile(testDest);
108
109         writeFile( testDest, "overwritten contents" );
110
111         assertTrue( "Test that the destination exists", Files.exists(testDest) );
112
113         CopyFileEvent event = new CopyFileEvent( testSource, testDest, digesters );
114
115         String target = readFile( testDest );
116
117         assertTrue( "Test that the destination contents have not changed", target.equals( "overwritten contents" ) );
118
119         event.commit();
120
121         target = readFile( testDest );
122
123         assertTrue( "Test that the destination contents are copied correctly", source.equals( target ) );
124
125         assertChecksumCommit( testDest );
126
127         event.rollback();
128
129         target = readFile( testDest );
130
131         assertTrue( "Test the destination file contents have been restored", target.equals( "overwritten contents" ) );
132
133         assertChecksumRollback( testDest );
134     }
135
136     @Test
137     public void testCreateRollbackCommit()
138         throws Exception
139     {
140         CopyFileEvent event = new CopyFileEvent( testSource, testDest, digesters );
141
142         assertFalse( "Test that the destination is not yet created", Files.exists(testDest) );
143
144         event.rollback();
145
146         assertFalse( "Test that the destination file is not yet created", Files.exists(testDest) );
147
148         event.commit();
149
150         assertTrue( "Test that the destination is created", Files.exists(testDest) );
151
152         assertChecksumCommit( testDest );
153
154         String target = readFile( testDest );
155
156         assertTrue( "Test that the destination contents are copied correctly", source.equals( target ) );
157     }
158
159     @After    
160     @Override
161     public void tearDown()
162         throws Exception
163     {
164         super.tearDown();
165
166         org.apache.archiva.common.utils.FileUtils.deleteDirectory( Paths.get( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/transaction-tests" ) );
167     }
168
169     @Override
170     protected void assertChecksumCommit( Path  file )
171         throws IOException
172     {
173         super.assertChecksumCommit( file );
174
175         String target = readFile( testDestChecksum );
176
177         assertFalse( "Test that the destination checksum contents are created correctly", oldChecksum.equals( target ) );
178     }
179
180     @Override
181     protected void assertChecksumRollback( Path file )
182         throws IOException
183     {
184         assertChecksumDoesNotExist( file, "md5" );
185         assertChecksumExists( file, "sha1" );
186
187         String target = readFile( testDestChecksum );
188
189         assertEquals( "Test that the destination checksum contents are reverted correctly", oldChecksum, target );
190     }
191 }