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