]> source.dussan.org Git - archiva.git/blob
6a707ab9ad3acb74c10f5f39fc0923a5ac058fbf
[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.apache.commons.io.FileUtils;
23
24 import java.io.File;
25 import java.io.IOException;
26 import org.junit.After;
27 import org.junit.Before;
28 import org.junit.Test;
29
30 /**
31  */
32 public class CopyFileEventTest
33     extends AbstractFileEventTest
34 {
35     private File testDir = new File( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/transaction-tests/copy-file" );
36
37     private File testDest = new File( testDir, "test-file.txt" );
38
39     private File testSource = new File( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/transaction-tests/test-file.txt" );
40
41     private File testDestChecksum;
42
43     private String source, oldChecksum;
44
45     @Override
46     @Before
47     public void setUp()
48         throws Exception
49     {
50         super.setUp();
51
52         testSource.getParentFile().mkdirs();
53
54         testSource.createNewFile();
55
56         writeFile( testSource, "source contents" );
57
58         testDestChecksum = new File( testDest.getPath() + ".sha1" );
59
60         testDestChecksum.getParentFile().mkdirs();
61
62         testDestChecksum.createNewFile();
63
64         writeFile( testDestChecksum, "this is the checksum" );
65
66         assertTrue( "Test if the source exists", testSource.exists() );
67
68         assertTrue( "Test if the destination checksum exists", testDestChecksum.exists() );
69
70         source = readFile( testSource );
71
72         oldChecksum = readFile( testDestChecksum );
73     }
74     
75     @Test
76     public void testCopyCommitRollback()
77         throws Exception
78     {
79         CopyFileEvent event = new CopyFileEvent( testSource, testDest, digesters );
80
81         assertFalse( "Test that the destination is not yet created", testDest.exists() );
82
83         event.commit();
84
85         assertTrue( "Test that the destination is created", testDest.exists() );
86
87         assertChecksumCommit( testDest );
88
89         String target = readFile( testDest );
90
91         assertTrue( "Test that the destination contents are copied correctly", source.equals( target ) );
92
93         event.rollback();
94
95         assertFalse( "Test that the destination file has been deleted", testDest.exists() );
96
97         assertChecksumRollback( testDest );
98     }
99
100     @Test
101     public void testCopyCommitRollbackWithBackup()
102         throws Exception
103     {
104         testDest.getParentFile().mkdirs();
105
106         testDest.createNewFile();
107
108         writeFile( testDest, "overwritten contents" );
109
110         assertTrue( "Test that the destination exists", testDest.exists() );
111
112         CopyFileEvent event = new CopyFileEvent( testSource, testDest, digesters );
113
114         String target = readFile( testDest );
115
116         assertTrue( "Test that the destination contents have not changed", target.equals( "overwritten contents" ) );
117
118         event.commit();
119
120         target = readFile( testDest );
121
122         assertTrue( "Test that the destination contents are copied correctly", source.equals( target ) );
123
124         assertChecksumCommit( testDest );
125
126         event.rollback();
127
128         target = readFile( testDest );
129
130         assertTrue( "Test the destination file contents have been restored", target.equals( "overwritten contents" ) );
131
132         assertChecksumRollback( testDest );
133     }
134
135     @Test
136     public void testCreateRollbackCommit()
137         throws Exception
138     {
139         CopyFileEvent event = new CopyFileEvent( testSource, testDest, digesters );
140
141         assertFalse( "Test that the destination is not yet created", testDest.exists() );
142
143         event.rollback();
144
145         assertFalse( "Test that the destination file is not yet created", testDest.exists() );
146
147         event.commit();
148
149         assertTrue( "Test that the destination is created", testDest.exists() );
150
151         assertChecksumCommit( testDest );
152
153         String target = readFile( testDest );
154
155         assertTrue( "Test that the destination contents are copied correctly", source.equals( target ) );
156     }
157
158     @After    
159     @Override
160     public void tearDown()
161         throws Exception
162     {
163         super.tearDown();
164
165         FileUtils.deleteDirectory( new File( org.apache.archiva.common.utils.FileUtils.getBasedir(), "target/transaction-tests" ) );
166     }
167
168     @Override
169     protected void assertChecksumCommit( File file )
170         throws IOException
171     {
172         super.assertChecksumCommit( file );
173
174         String target = readFile( testDestChecksum );
175
176         assertFalse( "Test that the destination checksum contents are created correctly", oldChecksum.equals( target ) );
177     }
178
179     @Override
180     protected void assertChecksumRollback( File file )
181         throws IOException
182     {
183         assertChecksumDoesNotExist( file, "md5" );
184         assertChecksumExists( file, "sha1" );
185
186         String target = readFile( testDestChecksum );
187
188         assertEquals( "Test that the destination checksum contents are reverted correctly", oldChecksum, target );
189     }
190 }