1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 package com.jcabi.beanstalk.maven.plugin;
31
32 import com.amazonaws.services.s3.AmazonS3;
33 import com.amazonaws.services.s3.model.ListObjectsRequest;
34 import com.amazonaws.services.s3.model.ObjectListing;
35 import com.amazonaws.services.s3.model.PutObjectResult;
36 import java.io.File;
37 import org.apache.commons.io.FileUtils;
38 import org.hamcrest.MatcherAssert;
39 import org.hamcrest.Matchers;
40 import org.junit.Rule;
41 import org.junit.Test;
42 import org.junit.rules.TemporaryFolder;
43 import org.mockito.Mockito;
44
45
46
47
48
49
50 public final class OverridingBundleTest {
51
52
53
54
55
56 @Rule
57 public transient TemporaryFolder temp = new TemporaryFolder();
58
59
60
61
62
63 @Test
64 public void overridesFileInAws() throws Exception {
65 final String bucket = "some-bucket";
66 final String key = "some-key";
67 final File war = this.temp.newFile("temp.war");
68 FileUtils.writeStringToFile(war, "broken JAR file content");
69 final AmazonS3 client = Mockito.mock(AmazonS3.class);
70 Mockito.doReturn(new PutObjectResult())
71 .when(client).putObject(bucket, key, war);
72 Mockito.doReturn(new ObjectListing())
73 .when(client).listObjects(Mockito.any(ListObjectsRequest.class));
74 final Bundle bundle = new OverridingBundle(client, bucket, key, war);
75 MatcherAssert.assertThat(
76 bundle.name(),
77 Matchers.equalTo(key)
78 );
79 MatcherAssert.assertThat(
80 bundle.location().getS3Key(),
81 Matchers.equalTo(key)
82 );
83 }
84
85
86
87
88
89 @Test
90 public void cachesResultOfLocation() throws Exception {
91 final AmazonS3 client = Mockito.mock(AmazonS3.class);
92 final File war = this.temp.newFile("temp1.war");
93 FileUtils.writeStringToFile(war, "some JAR file content");
94 final String bucket = "some-bucket-for-cache";
95 final String key = "some-key-for-cache";
96 Mockito.doReturn(new PutObjectResult())
97 .when(client).putObject(bucket, key, war);
98 Mockito.doReturn(new ObjectListing())
99 .when(client).listObjects(Mockito.any(ListObjectsRequest.class));
100 final Bundle bundle = new OverridingBundle(client, bucket, key, war);
101 bundle.location();
102 bundle.location();
103 Mockito.verify(client, Mockito.times(1)).putObject(bucket, key, war);
104 }
105 }