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