1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.internal.impl;
20
21 import org.eclipse.aether.DefaultRepositorySystemSession;
22 import org.eclipse.aether.internal.test.util.TestUtils;
23 import org.eclipse.aether.repository.RemoteRepository;
24 import org.eclipse.aether.repository.RepositoryPolicy;
25 import org.eclipse.aether.spi.connector.checksum.ChecksumPolicy;
26 import org.eclipse.aether.transfer.TransferResource;
27 import org.junit.jupiter.api.AfterEach;
28 import org.junit.jupiter.api.BeforeEach;
29 import org.junit.jupiter.api.Test;
30
31 import static org.junit.jupiter.api.Assertions.*;
32
33 public class DefaultChecksumPolicyProviderTest {
34
35 private static final String CHECKSUM_POLICY_UNKNOWN = "unknown";
36
37 private DefaultRepositorySystemSession session;
38
39 private DefaultChecksumPolicyProvider provider;
40
41 private RemoteRepository repository;
42
43 private TransferResource resource;
44
45 @BeforeEach
46 void setup() {
47 session = TestUtils.newSession();
48 provider = new DefaultChecksumPolicyProvider();
49 repository = new RemoteRepository.Builder("test", "default", "file:/void").build();
50 resource = new TransferResource(repository.getId(), repository.getUrl(), "file.txt", null, null);
51 }
52
53 @AfterEach
54 void teardown() {
55 provider = null;
56 session = null;
57 repository = null;
58 resource = null;
59 }
60
61 @Test
62 void testNewChecksumPolicy_Fail() {
63 ChecksumPolicy policy =
64 provider.newChecksumPolicy(session, repository, resource, RepositoryPolicy.CHECKSUM_POLICY_FAIL);
65 assertNotNull(policy);
66 assertEquals(FailChecksumPolicy.class, policy.getClass());
67 }
68
69 @Test
70 void testNewChecksumPolicy_Warn() {
71 ChecksumPolicy policy =
72 provider.newChecksumPolicy(session, repository, resource, RepositoryPolicy.CHECKSUM_POLICY_WARN);
73 assertNotNull(policy);
74 assertEquals(WarnChecksumPolicy.class, policy.getClass());
75 }
76
77 @Test
78 void testNewChecksumPolicy_Ignore() {
79 ChecksumPolicy policy =
80 provider.newChecksumPolicy(session, repository, resource, RepositoryPolicy.CHECKSUM_POLICY_IGNORE);
81 assertNull(policy);
82 }
83
84 @Test
85 void testNewChecksumPolicy_Unknown() {
86 assertThrows(
87 IllegalArgumentException.class,
88 () -> provider.newChecksumPolicy(session, repository, resource, CHECKSUM_POLICY_UNKNOWN));
89 }
90
91 @Test
92 void testGetEffectiveChecksumPolicy_EqualPolicies() {
93 String[] policies = {
94 RepositoryPolicy.CHECKSUM_POLICY_FAIL,
95 RepositoryPolicy.CHECKSUM_POLICY_WARN,
96 RepositoryPolicy.CHECKSUM_POLICY_IGNORE
97 };
98 for (String policy : policies) {
99 assertEquals(policy, provider.getEffectiveChecksumPolicy(session, policy, policy), policy);
100 }
101 }
102
103 @Test
104 void testGetEffectiveChecksumPolicy_DifferentPolicies() {
105 String[][] testCases = {
106 {RepositoryPolicy.CHECKSUM_POLICY_WARN, RepositoryPolicy.CHECKSUM_POLICY_FAIL},
107 {RepositoryPolicy.CHECKSUM_POLICY_IGNORE, RepositoryPolicy.CHECKSUM_POLICY_FAIL},
108 {RepositoryPolicy.CHECKSUM_POLICY_IGNORE, RepositoryPolicy.CHECKSUM_POLICY_WARN}
109 };
110 for (String[] testCase : testCases) {
111 assertEquals(
112 testCase[0],
113 provider.getEffectiveChecksumPolicy(session, testCase[0], testCase[1]),
114 testCase[0] + " vs " + testCase[1]);
115 assertEquals(
116 testCase[0],
117 provider.getEffectiveChecksumPolicy(session, testCase[1], testCase[0]),
118 testCase[0] + " vs " + testCase[1]);
119 }
120 }
121
122 @Test
123 void testGetEffectiveChecksumPolicy_UnknownPolicies() {
124 String[][] testCases = {
125 {RepositoryPolicy.CHECKSUM_POLICY_WARN, RepositoryPolicy.CHECKSUM_POLICY_FAIL},
126 {RepositoryPolicy.CHECKSUM_POLICY_WARN, RepositoryPolicy.CHECKSUM_POLICY_WARN},
127 {RepositoryPolicy.CHECKSUM_POLICY_IGNORE, RepositoryPolicy.CHECKSUM_POLICY_IGNORE}
128 };
129 for (String[] testCase : testCases) {
130 IllegalArgumentException e = assertThrows(
131 IllegalArgumentException.class,
132 () -> provider.getEffectiveChecksumPolicy(session, CHECKSUM_POLICY_UNKNOWN, testCase[1]));
133 assertEquals(e.getMessage(), "Unsupported policy: unknown");
134 e = assertThrows(
135 IllegalArgumentException.class,
136 () -> provider.getEffectiveChecksumPolicy(session, testCase[1], CHECKSUM_POLICY_UNKNOWN));
137 assertEquals(e.getMessage(), "Unsupported policy: unknown");
138 }
139 }
140 }