Skip to content

Commit 32f4f3d

Browse files
KarboniteKreamtrustin
authored andcommitted
Migrate ProjectManagerRule to JUnit 5 (#470)
This PR migrates internal `ProjectManagerRule` to JUnit 5. #### Changes: - Replace `ProjectManagerRule` with `ProjectManagerExtension` - Migrate tests using the extension - Extract common extension logic to `TemporaryFolder`
1 parent 346a975 commit 32f4f3d

File tree

8 files changed

+244
-171
lines changed

8 files changed

+244
-171
lines changed

server/src/test/java/com/linecorp/centraldogma/server/internal/api/TokenServiceTest.java

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2018 LINE Corporation
2+
* Copyright 2020 LINE Corporation
33
*
44
* LINE Corporation licenses this file to you under the Apache License,
55
* version 2.0 (the "License"); you may not use this file except in compliance
@@ -21,9 +21,9 @@
2121

2222
import java.util.Collection;
2323

24-
import org.junit.BeforeClass;
25-
import org.junit.ClassRule;
26-
import org.junit.Test;
24+
import org.junit.jupiter.api.BeforeAll;
25+
import org.junit.jupiter.api.Test;
26+
import org.junit.jupiter.api.extension.RegisterExtension;
2727

2828
import com.linecorp.armeria.server.HttpResponseException;
2929
import com.linecorp.armeria.server.ServiceRequestContext;
@@ -32,14 +32,14 @@
3232
import com.linecorp.centraldogma.server.metadata.MigrationUtil;
3333
import com.linecorp.centraldogma.server.metadata.Token;
3434
import com.linecorp.centraldogma.server.metadata.User;
35-
import com.linecorp.centraldogma.testing.internal.ProjectManagerRule;
35+
import com.linecorp.centraldogma.testing.internal.ProjectManagerExtension;
3636

3737
import io.netty.util.internal.StringUtil;
3838

39-
public class TokenServiceTest {
39+
class TokenServiceTest {
4040

41-
@ClassRule
42-
public static final ProjectManagerRule rule = new ProjectManagerRule() {
41+
@RegisterExtension
42+
static final ProjectManagerExtension manager = new ProjectManagerExtension() {
4343
@Override
4444
protected void afterExecutorStarted() {
4545
MigrationUtil.migrate(projectManager(), executor());
@@ -55,14 +55,14 @@ protected void afterExecutorStarted() {
5555

5656
private final ServiceRequestContext ctx = mock(ServiceRequestContext.class);
5757

58-
@BeforeClass
59-
public static void beforeClass() {
60-
tokenService = new TokenService(rule.projectManager(), rule.executor(),
61-
new MetadataService(rule.projectManager(), rule.executor()));
58+
@BeforeAll
59+
static void setUp() {
60+
tokenService = new TokenService(manager.projectManager(), manager.executor(),
61+
new MetadataService(manager.projectManager(), manager.executor()));
6262
}
6363

6464
@Test
65-
public void adminToken() {
65+
void adminToken() {
6666
final Token token = tokenService.createToken("forAdmin1", true, adminAuthor, admin).join()
6767
.content().get();
6868
assertThat(token.isActive()).isTrue();
@@ -86,7 +86,7 @@ public void adminToken() {
8686
}
8787

8888
@Test
89-
public void userToken() {
89+
void userToken() {
9090
final Token userToken1 = tokenService.createToken("forUser1", false, adminAuthor, admin)
9191
.join().content().get();
9292
final Token userToken2 = tokenService.createToken("forUser2", false, guestAuthor, guest)

server/src/test/java/com/linecorp/centraldogma/server/internal/storage/PurgeSchedulingServiceTest.java

+26-21
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2019 LINE Corporation
2+
* Copyright 2020 LINE Corporation
33
*
44
* LINE Corporation licenses this file to you under the Apache License,
55
* version 2.0 (the "License"); you may not use this file except in compliance
@@ -22,9 +22,9 @@
2222

2323
import java.util.concurrent.Executor;
2424

25-
import org.junit.Before;
26-
import org.junit.Rule;
27-
import org.junit.Test;
25+
import org.junit.jupiter.api.BeforeEach;
26+
import org.junit.jupiter.api.Test;
27+
import org.junit.jupiter.api.extension.RegisterExtension;
2828

2929
import com.linecorp.centraldogma.common.Author;
3030
import com.linecorp.centraldogma.server.command.Command;
@@ -33,9 +33,9 @@
3333
import com.linecorp.centraldogma.server.command.PurgeRepositoryCommand;
3434
import com.linecorp.centraldogma.server.metadata.MetadataService;
3535
import com.linecorp.centraldogma.server.storage.project.ProjectManager;
36-
import com.linecorp.centraldogma.testing.internal.ProjectManagerRule;
36+
import com.linecorp.centraldogma.testing.internal.ProjectManagerExtension;
3737

38-
public class PurgeSchedulingServiceTest {
38+
class PurgeSchedulingServiceTest {
3939

4040
private static final String PROJA_ACTIVE = "proja";
4141
private static final String REPOA_REMOVED = "repoa";
@@ -46,8 +46,8 @@ public class PurgeSchedulingServiceTest {
4646
private PurgeSchedulingService service;
4747
private MetadataService metadataService;
4848

49-
@Rule
50-
public final ProjectManagerRule rule = new ProjectManagerRule() {
49+
@RegisterExtension
50+
final ProjectManagerExtension manager = new ProjectManagerExtension() {
5151
@Override
5252
protected ProjectManager newProjectManager(Executor repositoryWorker, Executor purgeWorker) {
5353
return spy(super.newProjectManager(repositoryWorker, unused -> { /* noop for test */}));
@@ -71,30 +71,35 @@ protected void afterExecutorStarted() {
7171
executor().execute(Command.createProject(AUTHOR, PROJB_REMOVED)).join();
7272
executor().execute(Command.removeProject(AUTHOR, PROJB_REMOVED)).join();
7373
}
74+
75+
@Override
76+
protected boolean runForEachTest() {
77+
return true;
78+
}
7479
};
7580

76-
@Before
77-
public void init() {
78-
service = new PurgeSchedulingService(rule.projectManager(),
79-
rule.purgeWorker(),
81+
@BeforeEach
82+
void setUp() {
83+
service = new PurgeSchedulingService(manager.projectManager(),
84+
manager.purgeWorker(),
8085
MAX_REMOVED_REPOSITORY_AGE_MILLIS);
8186
}
8287

8388
@Test
84-
public void testClear() throws InterruptedException {
85-
rule.executor().execute(Command.purgeRepository(AUTHOR, PROJA_ACTIVE, REPOA_REMOVED)).join();
86-
rule.executor().execute(Command.purgeProject(AUTHOR, PROJB_REMOVED)).join();
89+
void testClear() {
90+
manager.executor().execute(Command.purgeRepository(AUTHOR, PROJA_ACTIVE, REPOA_REMOVED)).join();
91+
manager.executor().execute(Command.purgeProject(AUTHOR, PROJB_REMOVED)).join();
8792

88-
service.start(rule.executor(), metadataService);
89-
verify(rule.projectManager()).purgeMarked();
93+
service.start(manager.executor(), metadataService);
94+
verify(manager.projectManager()).purgeMarked();
9095
service.stop();
9196
}
9297

9398
@Test
94-
public void testSchedule() throws InterruptedException {
99+
void testSchedule() throws InterruptedException {
95100
Thread.sleep(10); // let removed files be purged
96-
service.purgeProjectAndRepository(rule.executor(), metadataService);
97-
verify(rule.executor()).execute(isA(PurgeProjectCommand.class));
98-
verify(rule.executor()).execute(isA(PurgeRepositoryCommand.class));
101+
service.purgeProjectAndRepository(manager.executor(), metadataService);
102+
verify(manager.executor()).execute(isA(PurgeProjectCommand.class));
103+
verify(manager.executor()).execute(isA(PurgeRepositoryCommand.class));
99104
}
100105
}

server/src/test/java/com/linecorp/centraldogma/server/metadata/MetadataServiceTest.java

+34-29
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2019 LINE Corporation
2+
* Copyright 2020 LINE Corporation
33
*
44
* LINE Corporation licenses this file to you under the Apache License,
55
* version 2.0 (the "License"); you may not use this file except in compliance
@@ -23,27 +23,32 @@
2323
import static org.assertj.core.api.Assertions.assertThat;
2424
import static org.assertj.core.api.Assertions.assertThatThrownBy;
2525

26-
import org.junit.Rule;
27-
import org.junit.Test;
26+
import org.junit.jupiter.api.Test;
27+
import org.junit.jupiter.api.extension.RegisterExtension;
2828

2929
import com.linecorp.centraldogma.common.Author;
3030
import com.linecorp.centraldogma.common.ChangeConflictException;
3131
import com.linecorp.centraldogma.common.ProjectExistsException;
3232
import com.linecorp.centraldogma.common.RepositoryExistsException;
3333
import com.linecorp.centraldogma.common.RepositoryNotFoundException;
3434
import com.linecorp.centraldogma.server.command.Command;
35-
import com.linecorp.centraldogma.testing.internal.ProjectManagerRule;
35+
import com.linecorp.centraldogma.testing.internal.ProjectManagerExtension;
3636

37-
public class MetadataServiceTest {
37+
class MetadataServiceTest {
3838

39-
@Rule
40-
public final ProjectManagerRule rule = new ProjectManagerRule() {
39+
@RegisterExtension
40+
final ProjectManagerExtension manager = new ProjectManagerExtension() {
4141
@Override
4242
protected void afterExecutorStarted() {
4343
MigrationUtil.migrate(projectManager(), executor());
4444
// Create a project and its metadata here.
4545
executor().execute(Command.createProject(author, project1)).join();
4646
}
47+
48+
@Override
49+
protected boolean runForEachTest() {
50+
return true;
51+
}
4752
};
4853

4954
private static final String project1 = "foo";
@@ -60,14 +65,13 @@ protected void afterExecutorStarted() {
6065
new PerRolePermissions(READ_WRITE, NO_PERMISSION, NO_PERMISSION);
6166

6267
@Test
63-
public void project() throws Exception {
64-
final MetadataService mds = newMetadataService(rule);
68+
void project() {
69+
final MetadataService mds = newMetadataService(manager);
6570

6671
ProjectMetadata metadata;
6772
metadata = mds.getProject(project1).join();
6873

69-
assertThatThrownBy(() -> rule.executor().execute(Command.createProject(author, project1))
70-
.join())
74+
assertThatThrownBy(() -> manager.executor().execute(Command.createProject(author, project1)).join())
7175
.hasCauseInstanceOf(ProjectExistsException.class);
7276

7377
assertThat(metadata.name()).isEqualTo(project1);
@@ -91,8 +95,8 @@ public void project() throws Exception {
9195
}
9296

9397
@Test
94-
public void repository() throws Exception {
95-
final MetadataService mds = newMetadataService(rule);
98+
void repository() {
99+
final MetadataService mds = newMetadataService(manager);
96100

97101
final ProjectMetadata metadata;
98102
RepositoryMetadata repositoryMetadata;
@@ -135,8 +139,8 @@ public void repository() throws Exception {
135139
}
136140

137141
@Test
138-
public void perRolePermissions() throws Exception {
139-
final MetadataService mds = newMetadataService(rule);
142+
void perRolePermissions() {
143+
final MetadataService mds = newMetadataService(manager);
140144

141145
final ProjectMetadata metadata;
142146
RepositoryMetadata repositoryMetadata;
@@ -170,8 +174,8 @@ public void perRolePermissions() throws Exception {
170174
}
171175

172176
@Test
173-
public void perUserPermissions() throws Exception {
174-
final MetadataService mds = newMetadataService(rule);
177+
void perUserPermissions() {
178+
final MetadataService mds = newMetadataService(manager);
175179

176180
mds.addRepo(author, project1, repo1, ownerOnly).join();
177181

@@ -210,8 +214,8 @@ public void perUserPermissions() throws Exception {
210214
}
211215

212216
@Test
213-
public void perTokenPermissions() throws Exception {
214-
final MetadataService mds = newMetadataService(rule);
217+
void perTokenPermissions() {
218+
final MetadataService mds = newMetadataService(manager);
215219

216220
mds.addRepo(author, project1, repo1, ownerOnly).join();
217221
mds.createToken(author, app1).join();
@@ -250,8 +254,8 @@ public void perTokenPermissions() throws Exception {
250254
}
251255

252256
@Test
253-
public void removeMember() throws Exception {
254-
final MetadataService mds = newMetadataService(rule);
257+
void removeMember() {
258+
final MetadataService mds = newMetadataService(manager);
255259

256260
mds.addRepo(author, project1, repo1, ownerOnly).join();
257261

@@ -277,8 +281,8 @@ public void removeMember() throws Exception {
277281
}
278282

279283
@Test
280-
public void removeToken() throws Exception {
281-
final MetadataService mds = newMetadataService(rule);
284+
void removeToken() {
285+
final MetadataService mds = newMetadataService(manager);
282286

283287
mds.addRepo(author, project1, repo1, ownerOnly).join();
284288
mds.createToken(author, app1).join();
@@ -303,8 +307,8 @@ public void removeToken() throws Exception {
303307
}
304308

305309
@Test
306-
public void destroyToken() throws Exception {
307-
final MetadataService mds = newMetadataService(rule);
310+
void destroyToken() {
311+
final MetadataService mds = newMetadataService(manager);
308312

309313
mds.addRepo(author, project1, repo1, ownerOnly).join();
310314
mds.createToken(author, app1).join();
@@ -331,8 +335,8 @@ public void destroyToken() throws Exception {
331335
}
332336

333337
@Test
334-
public void tokenActivationAndDeactivation() throws Exception {
335-
final MetadataService mds = newMetadataService(rule);
338+
void tokenActivationAndDeactivation() {
339+
final MetadataService mds = newMetadataService(manager);
336340

337341
Token token;
338342
mds.createToken(author, app1).join();
@@ -343,6 +347,7 @@ public void tokenActivationAndDeactivation() throws Exception {
343347
mds.deactivateToken(author, app1).join();
344348
token = mds.getTokens().join().get(app1);
345349
assertThat(token.isActive()).isFalse();
350+
assertThat(token.deactivation()).isNotNull();
346351
assertThat(token.deactivation().user()).isEqualTo(owner.id());
347352

348353
mds.activateToken(author, app1).join();
@@ -354,8 +359,8 @@ private static RepositoryMetadata getRepo1(MetadataService mds) {
354359
return metadata.repo(repo1);
355360
}
356361

357-
private static MetadataService newMetadataService(ProjectManagerRule rule) {
358-
return new MetadataService(rule.projectManager(), rule.executor());
362+
private static MetadataService newMetadataService(ProjectManagerExtension extension) {
363+
return new MetadataService(extension.projectManager(), extension.executor());
359364
}
360365

361366
private static ProjectMetadata getProject(MetadataService mds, String projectName) {

0 commit comments

Comments
 (0)