diff --git a/pom.xml b/pom.xml
index 60afc118..d06b3979 100644
--- a/pom.xml
+++ b/pom.xml
@@ -162,6 +162,9 @@
java.util.logging.*
edu.tamu.app.config.AppEmailConfig
+
+ **/ProjectInitialization.class
+
html
@@ -173,6 +176,11 @@
org.jacoco
jacoco-maven-plugin
+
+
+ **/ProjectInitialization.class
+
+
prepare-agent
diff --git a/src/main/java/edu/tamu/app/ProjectInitialization.java b/src/main/java/edu/tamu/app/ProjectInitialization.java
index 41e92f7c..2e516c6b 100644
--- a/src/main/java/edu/tamu/app/ProjectInitialization.java
+++ b/src/main/java/edu/tamu/app/ProjectInitialization.java
@@ -9,6 +9,7 @@
import org.springframework.stereotype.Component;
import edu.tamu.app.model.CardType;
+import edu.tamu.app.model.ServiceType;
import edu.tamu.app.model.repo.CardTypeRepo;
import edu.tamu.app.model.repo.RemoteProjectManagerRepo;
import edu.tamu.app.service.registry.ManagementBeanRegistry;
@@ -29,6 +30,22 @@ public class ProjectInitialization implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
remoteProjectManagerRepo.findAll().forEach(versionManagementSoftware -> {
+ if (versionManagementSoftware.getType().equals(ServiceType.GITHUB)) {
+ if (!versionManagementSoftware.getSettingValue("token").isPresent()) {
+ return;
+ }
+ }
+
+ if (versionManagementSoftware.getType().equals(ServiceType.VERSION_ONE)) {
+ if (!versionManagementSoftware.getSettingValue("url").isPresent()) {
+ return;
+ }
+
+ if (versionManagementSoftware.getSettingValue("url").get().isEmpty()) {
+ return;
+ }
+ }
+
managementBeanRegistry.register(versionManagementSoftware);
});
CardType type = cardTypeRepo.findByIdentifier("Feature");
diff --git a/src/main/java/edu/tamu/app/model/ServiceType.java b/src/main/java/edu/tamu/app/model/ServiceType.java
index c9a3f199..a0130dac 100644
--- a/src/main/java/edu/tamu/app/model/ServiceType.java
+++ b/src/main/java/edu/tamu/app/model/ServiceType.java
@@ -40,6 +40,9 @@ public List getScaffold() {
List scaffold = new ArrayList();
switch (this) {
case GITHUB:
+ scaffold.add(new Setting("text", "url", "URL", true));
+ scaffold.add(new Setting("password", "token", "Token", false));
+ break;
case VERSION_ONE:
scaffold.add(new Setting("text", "url", "URL", true));
scaffold.add(new Setting("text", "username", "Username", false));
diff --git a/src/main/java/edu/tamu/app/service/manager/GitHubService.java b/src/main/java/edu/tamu/app/service/manager/GitHubService.java
index 251118ce..835c6c96 100644
--- a/src/main/java/edu/tamu/app/service/manager/GitHubService.java
+++ b/src/main/java/edu/tamu/app/service/manager/GitHubService.java
@@ -12,7 +12,6 @@
import java.util.Map;
import java.util.Optional;
-import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.kohsuke.github.GHIssue;
import org.kohsuke.github.GHIssueState;
@@ -40,7 +39,6 @@
import edu.tamu.app.cache.model.Sprint;
import edu.tamu.app.model.ManagementService;
import edu.tamu.app.model.request.FeatureRequest;
-import edu.tamu.app.rest.BasicAuthRestTemplate;
import edu.tamu.app.rest.TokenAuthRestTemplate;
public class GitHubService extends MappingRemoteProjectManagerBean {
@@ -136,24 +134,18 @@ public String push(final FeatureRequest request) throws Exception {
}
protected GitHub getGitHubInstance() throws IOException {
- GitHub githubInstance;
final Optional endpoint = managementService.getSettingValue("url");
final Optional token = managementService.getSettingValue("token");
if (!endpoint.isPresent()) {
- throw new RuntimeException("GitHub service enpoint was not defined");
+ throw new RuntimeException("GitHub service endpoint was not defined");
}
- if (token.isPresent()) {
- githubInstance = ghBuilder
- .withEndpoint(endpoint.get())
- .withOAuthToken(token.get())
- .build();
- } else {
- githubInstance = ghBuilder
- .withEndpoint(endpoint.get())
- .withPassword(getSettingValue("username"), getSettingValue("password"))
- .build();
+ if (!token.isPresent()) {
+ throw new RuntimeException("GitHub token was not defined");
}
- return githubInstance;
+ return ghBuilder
+ .withEndpoint(endpoint.get())
+ .withOAuthToken(token.get())
+ .build();
}
private String getSettingValue(final String key) {
@@ -166,8 +158,7 @@ private String getSettingValue(final String key) {
}
private RestTemplate getRestTemplate() {
- String token = getSettingValue("token");
- return StringUtils.isNotBlank(token) ? new TokenAuthRestTemplate(token) : new BasicAuthRestTemplate(getSettingValue("username"), getSettingValue("password"));
+ return new TokenAuthRestTemplate(getSettingValue("token"));
}
private RemoteProject buildRemoteProject(GHRepository repo, List labels) throws IOException {
diff --git a/src/test/java/edu/tamu/app/model/ModelTest.java b/src/test/java/edu/tamu/app/model/ModelTest.java
index 093d0dfe..0dce87fc 100644
--- a/src/test/java/edu/tamu/app/model/ModelTest.java
+++ b/src/test/java/edu/tamu/app/model/ModelTest.java
@@ -75,6 +75,20 @@ public abstract class ModelTest {
protected InternalRequestRepo internalRequestRepo;
protected static Map getMockSettings() {
+ return getMockSettings(false);
+ }
+
+ protected static Map getMockSettings(boolean token) {
+ if (token) {
+ return new HashMap() {
+ private static final long serialVersionUID = 2020874481642498007L;
+ {
+ put("url", "https://localhost:9101/TexasAMLibrary");
+ put("token", "token");
+ }
+ };
+ }
+
return new HashMap() {
private static final long serialVersionUID = 2020874481642498006L;
{
diff --git a/src/test/java/edu/tamu/app/model/RemoteProjectManagerTest.java b/src/test/java/edu/tamu/app/model/RemoteProjectManagerTest.java
index 333d245a..80a715b0 100644
--- a/src/test/java/edu/tamu/app/model/RemoteProjectManagerTest.java
+++ b/src/test/java/edu/tamu/app/model/RemoteProjectManagerTest.java
@@ -23,15 +23,16 @@ public class RemoteProjectManagerTest extends ModelTest {
@Test
public void testCreate() {
Map settings = getMockSettings();
+ Map settingsToken = getMockSettings(true);
RemoteProjectManager remoteProjectManager1 = remoteProjectManagerRepo.create(new RemoteProjectManager(TEST_REMOTE_PROJECT_MANAGER1_NAME, ServiceType.VERSION_ONE, settings));
- RemoteProjectManager remoteProjectManager2 = remoteProjectManagerRepo.create(new RemoteProjectManager(TEST_REMOTE_PROJECT_MANAGER2_NAME, ServiceType.GITHUB, settings));
+ RemoteProjectManager remoteProjectManager2 = remoteProjectManagerRepo.create(new RemoteProjectManager(TEST_REMOTE_PROJECT_MANAGER2_NAME, ServiceType.GITHUB, settingsToken));
assertEquals("Remote project manager repo had incorrect number of remote project managers!", 2, remoteProjectManagerRepo.count());
assertEquals("Remote project manager had incorrect name!", TEST_REMOTE_PROJECT_MANAGER1_NAME, remoteProjectManager1.getName());
assertEquals("Remote project manager had incorrect service type!", ServiceType.VERSION_ONE, remoteProjectManager1.getType());
assertEquals("Remote project manager had incorrect settings!", settings, remoteProjectManager1.getSettings());
assertEquals("Remote project manager had incorrect name!", TEST_REMOTE_PROJECT_MANAGER2_NAME, remoteProjectManager2.getName());
assertEquals("Remote project manager had incorrect service type!", ServiceType.GITHUB, remoteProjectManager2.getType());
- assertEquals("Remote project manager had incorrect settings!", settings, remoteProjectManager2.getSettings());
+ assertEquals("Remote project manager had incorrect settings!", settingsToken, remoteProjectManager2.getSettings());
}
@Test
diff --git a/src/test/java/edu/tamu/app/service/manager/GitHubServiceTest.java b/src/test/java/edu/tamu/app/service/manager/GitHubServiceTest.java
index eca0bbea..dedf0002 100644
--- a/src/test/java/edu/tamu/app/service/manager/GitHubServiceTest.java
+++ b/src/test/java/edu/tamu/app/service/manager/GitHubServiceTest.java
@@ -173,14 +173,14 @@ public class GitHubServiceTest extends CacheMockTests {
@Before
public void setUp() throws Exception {
ManagementService managementService = new RemoteProjectManager("GitHub", ServiceType.GITHUB,
- new HashMap() {
- private static final long serialVersionUID = 2020874481642498006L;
- {
- put("url", "https://localhost:9101/TexasAMLibrary");
- put("username", "username");
- put("password", "password");
- }
- });
+ new HashMap() {
+ private static final long serialVersionUID = 2020874481642498006L;
+ {
+ put("url", "https://localhost:9101/TexasAMLibrary");
+ put("token", "token");
+ }
+ });
+
CardTypeRepo cardTypeRepo = mock(CardTypeRepo.class);
StatusRepo statusRepo = mock(StatusRepo.class);
@@ -199,7 +199,6 @@ public void setUp() throws Exception {
github = mock(GitHub.class);
when(ghBuilder.withEndpoint(any(String.class))).thenReturn(ghBuilder);
- when(ghBuilder.withPassword(any(String.class), any(String.class))).thenReturn(ghBuilder);
when(ghBuilder.withOAuthToken(any(String.class))).thenReturn(ghBuilder);
when(ghBuilder.build()).thenReturn(github);
@@ -397,24 +396,45 @@ public void testGetMember() throws IOException {
}
@Test
- public void testGetGitHubInstanceByPassword() throws IOException {
- GitHub githubInstance = gitHubService.getGitHubInstance();
- assertNotNull("GitHub object was not created", githubInstance);
+ public void testGetGitHubInstanceWithInvalidServiceEndpoint() throws IOException {
+ ManagementService invalidManagementService = new RemoteProjectManager("GitHub", ServiceType.GITHUB,
+ new HashMap() {
+ private static final long serialVersionUID = 2020874481642498006L;
+ {
+ put("token", "token");
+ }
+ });
+
+ setField(gitHubService, "managementService", invalidManagementService);
+
+ try {
+ gitHubService.getGitHubInstance();
+ } catch (RuntimeException e) {
+ assertEquals(e.getMessage(), "GitHub service endpoint was not defined");
+ }
}
@Test
- public void testGetGitHubInstanceByToken() throws IOException {
- ManagementService tokenManagementService = new RemoteProjectManager("GitHub", ServiceType.GITHUB,
- new HashMap() {
- private static final long serialVersionUID = 2020874481642498006L;
- {
- put("url", "https://localhost:9101/TexasAMLibrary");
- put("token", "token");
- }
- });
+ public void testGetGitHubInstanceWithInvalidToken() throws IOException {
+ ManagementService invalidManagementService = new RemoteProjectManager("GitHub", ServiceType.GITHUB,
+ new HashMap() {
+ private static final long serialVersionUID = 2020874481642498006L;
+ {
+ put("url", "https://localhost:9101/TexasAMLibrary");
+ }
+ });
+
+ setField(gitHubService, "managementService", invalidManagementService);
- setField(gitHubService, "managementService", tokenManagementService);
+ try {
+ gitHubService.getGitHubInstance();
+ } catch (RuntimeException e) {
+ assertEquals(e.getMessage(), "GitHub token was not defined");
+ }
+ }
+ @Test
+ public void testGetGitHubInstanceByToken() throws IOException {
GitHub gitHubInstance = gitHubService.getGitHubInstance();
assertNotNull("GitHub object was not created", gitHubInstance);
}