This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects
Commit 65dda847 authored by Michael Breu's avatar Michael Breu :speech_balloon:
Browse files

ArchUnit Verbesserungen

parent 9ca372b1
Branches
2 merge requests!91Bringing JHipster7.6.0 to production,!88Integrating Update to JHipster 7.6.0 back to Development
Showing
with 35 additions and 39 deletions
package at.ac.uibk.gitsearch.config.audit;
package at.ac.uibk.gitsearch.repository;
import at.ac.uibk.gitsearch.domain.PersistentAuditEvent;
......
package at.ac.uibk.gitsearch.repository;
import at.ac.uibk.gitsearch.config.Constants;
import at.ac.uibk.gitsearch.config.audit.AuditEventConverter;
import at.ac.uibk.gitsearch.domain.PersistentAuditEvent;
import org.slf4j.Logger;
......
......@@ -17,13 +17,13 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import at.ac.uibk.gitsearch.config.ApplicationProperties;
import at.ac.uibk.gitsearch.es.model.DocumentInfo;
import at.ac.uibk.gitsearch.service.dto.GitFilesAggregationDTO;
import at.ac.uibk.gitsearch.service.dto.GitFilesDTO;
......@@ -31,16 +31,20 @@ import at.ac.uibk.gitsearch.service.dto.GitFilesPageDetailsDTO;
@Repository
public class GitFilesRepositoryImpl implements GitFilesRepository {
@Value("${application.search.highlight-pre}")
private String preTag;
@Value("${application.search.highlight-post}")
private String postTag;
private final RestHighLevelClient elasticsearchClient;
private final ApplicationProperties properties;
private final int FRAGMENT_SIZE = 200;
public GitFilesRepositoryImpl(RestHighLevelClient elasticsearchClient, ApplicationProperties properties) {
public GitFilesRepositoryImpl(RestHighLevelClient elasticsearchClient) {
this.elasticsearchClient = elasticsearchClient;
this.properties = properties;
}
@SuppressWarnings("deprecation")
......@@ -67,8 +71,8 @@ public class GitFilesRepositoryImpl implements GitFilesRepository {
HighlightBuilder highlightBuilder = new HighlightBuilder()
.highlighterType("plain")
.preTags(properties.getSearch().getHighlightPre())
.postTags(properties.getSearch().getHighlightPost())
.preTags(preTag)
.postTags(postTag)
.field(SearchRepositoryConstants.FULLTEXT_CONTENT)
.boundaryChars(boundaryChars)
.boundaryScannerType(HighlightBuilder.BoundaryScannerType.SENTENCE)
......@@ -95,7 +99,7 @@ public class GitFilesRepositoryImpl implements GitFilesRepository {
List<GitFilesDTO> gitFilesDTOS = new ArrayList<>();
for (SearchHit searchHit : searchResponse.getHits().getHits()) {
DocumentInfo documentInfo = objectMapper.readValue(searchHit.getSourceAsString(), DocumentInfo.class);
gitFilesDTOS.add(new GitFilesDTO(documentInfo, searchHit, properties));
gitFilesDTOS.add(new GitFilesDTO(documentInfo, searchHit, preTag, postTag));
}
long hitCount = searchResponse.getHits().getTotalHits().value;
return new GitFilesPageDetailsDTO(gitFilesDTOS, hitCount);
......
......@@ -13,6 +13,7 @@ import java.util.stream.Collectors;
import org.apache.commons.lang3.ObjectUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
......@@ -23,7 +24,6 @@ import org.springframework.security.core.userdetails.User;
import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
import org.springframework.stereotype.Component;
import at.ac.uibk.gitsearch.config.ApplicationProperties;
import at.ac.uibk.gitsearch.management.SecurityMetersService;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
......@@ -79,6 +79,10 @@ public class TokenProvider {
public static final String GITLAB_ACCESS_TOKEN = "gitLabAccessToken";
public static final String GITLAB_ACCESS_ISSUER = "gitLabAccessIssuer";
@Value("${application.gitlab.url}")
private String gitLabUrl;
public static final String PRE_TOKEN_CLAIM = "preToken";
......@@ -98,10 +102,7 @@ public class TokenProvider {
private final SecurityMetersService securityMetersService;
private final ApplicationProperties applicationProperties;
public TokenProvider(JHipsterProperties jHipsterProperties, SecurityMetersService securityMetersService, ApplicationProperties applicationProperties) {
this.applicationProperties = applicationProperties;
public TokenProvider(JHipsterProperties jHipsterProperties, SecurityMetersService securityMetersService) {
byte[] keyBytes;
String secret = jHipsterProperties.getSecurity().getAuthentication().getJwt().getBase64Secret();
if (!ObjectUtils.isEmpty(secret)) {
......@@ -289,7 +290,7 @@ public class TokenProvider {
if(accessToken.isPresent()) {
final Optional<String> accessIssuer = getGitLabAccessIssuer();
if(accessIssuer.isPresent()) {
return Optional.of(new GitLabAccessInfo(accessToken.get(), applicationProperties.getGitLab().getUrl(), getCurrentPrincipal()) );
return Optional.of(new GitLabAccessInfo(accessToken.get(), gitLabUrl, getCurrentPrincipal()) );
}
}
return Optional.empty();
......
package at.ac.uibk.gitsearch.service;
import tech.jhipster.config.JHipsterProperties;
import at.ac.uibk.gitsearch.config.audit.AuditEventConverter;
import at.ac.uibk.gitsearch.repository.AuditEventConverter;
import at.ac.uibk.gitsearch.repository.PersistenceAuditEventRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......
package at.ac.uibk.gitsearch.service.dto;
import at.ac.uibk.gitsearch.config.ApplicationProperties;
public class FragmentDTO {
private String fragment;
......@@ -11,10 +9,10 @@ public class FragmentDTO {
this.firstLineNumber = 1;
}
public FragmentDTO matchFillLine(String content, String fragment, ApplicationProperties.Search search) {
public FragmentDTO matchFillLine(String content, String fragment, String preTag, String postTag) {
String fragmentWOHighlight = fragment
.replaceAll(search.getHighlightPre(), "")
.replaceAll(search.getHighlightPost(), "");
.replaceAll(preTag, "")
.replaceAll(postTag, "");
int idx = content.indexOf(fragmentWOHighlight);
int idxEnd = idx + fragmentWOHighlight.length();
......
......@@ -5,7 +5,6 @@ import java.util.Map;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import at.ac.uibk.gitsearch.config.ApplicationProperties;
import at.ac.uibk.gitsearch.es.model.DocumentInfo;
import at.ac.uibk.gitsearch.repository.search.SearchRepositoryConstants;
......@@ -22,12 +21,12 @@ public class GitFilesDTO {
private final String filePath;
private final String gitUrl;
public GitFilesDTO(DocumentInfo documentInfo, SearchHit searchHit, ApplicationProperties properties) {
public GitFilesDTO(DocumentInfo documentInfo, SearchHit searchHit, String preTag, String postTag) {
this.content = documentInfo.getContent();
Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
String highlightedFragement = highlightFields.get(SearchRepositoryConstants.FULLTEXT_CONTENT).getFragments()[0].string();
this.fragment = new FragmentDTO().matchFillLine(documentInfo.getContent(), highlightedFragement, properties.getSearch());
this.fragment = new FragmentDTO().matchFillLine(documentInfo.getContent(), highlightedFragement, preTag, postTag);
this.fileFormat = documentInfo.getFile().getFile_format();
this.repository = documentInfo.getProject().getProject_name();
......
......@@ -213,6 +213,10 @@ application:
search:
highlight-pre: <mark><strong>
highlight-post: </strong></mark>
gitlab:
url: https://sharing.codeability-austria.uibk.ac.at/
guestAccessToken: secreit
adminAccessToken: secret
deployment-info:
commit-id: "${gitCommitId}"
branch: "${gitBranch}"
......
......@@ -3,7 +3,6 @@ package at.ac.uibk.gitsearch.repository;
import at.ac.uibk.gitsearch.GitsearchApp;
import at.ac.uibk.gitsearch.config.Constants;
import at.ac.uibk.gitsearch.config.audit.AuditEventConverter;
import at.ac.uibk.gitsearch.domain.PersistentAuditEvent;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
......
......@@ -29,14 +29,13 @@ class JWTFilterTest {
@BeforeEach
public void setup() {
ApplicationProperties applicationProperties = new ApplicationProperties();
JHipsterProperties jHipsterProperties = new JHipsterProperties();
String base64Secret = "fd54a45s65fds737b9aafcb3412e07ed99b267f33413274720ddbb7f6c5e64e9f14075f2d7ed041592f0b7657baf8";
jHipsterProperties.getSecurity().getAuthentication().getJwt().setBase64Secret(base64Secret);
SecurityMetersService securityMetersService = new SecurityMetersService(new SimpleMeterRegistry());
tokenProvider = new TokenProvider(jHipsterProperties, securityMetersService, applicationProperties);
tokenProvider = new TokenProvider(jHipsterProperties, securityMetersService);
ReflectionTestUtils.setField(tokenProvider, "key", Keys.hmacShaKeyFor(Decoders.BASE64.decode(base64Secret)));
ReflectionTestUtils.setField(tokenProvider, "tokenValidityInMilliseconds", 60000);
......
......@@ -36,8 +36,6 @@ class TokenProviderSecurityMetersTests {
@BeforeEach
public void setup() {
ApplicationProperties applicationProperties = new ApplicationProperties();
JHipsterProperties jHipsterProperties = new JHipsterProperties();
String base64Secret = "fd54a45s65fds737b9aafcb3412e07ed99b267f33413274720ddbb7f6c5e64e9f14075f2d7ed041592f0b7657baf8";
jHipsterProperties.getSecurity().getAuthentication().getJwt().setBase64Secret(base64Secret);
......@@ -46,7 +44,7 @@ class TokenProviderSecurityMetersTests {
SecurityMetersService securityMetersService = new SecurityMetersService(meterRegistry);
tokenProvider = new TokenProvider(jHipsterProperties, securityMetersService,applicationProperties);
tokenProvider = new TokenProvider(jHipsterProperties, securityMetersService);
Key key = Keys.hmacShaKeyFor(Decoders.BASE64.decode(base64Secret));
......
......@@ -31,15 +31,13 @@ class TokenProviderTest {
@BeforeEach
public void setup() {
ApplicationProperties applicationProperties = new ApplicationProperties();
JHipsterProperties jHipsterProperties = new JHipsterProperties();
String base64Secret = "fd54a45s65fds737b9aafcb3412e07ed99b267f33413274720ddbb7f6c5e64e9f14075f2d7ed041592f0b7657baf8";
jHipsterProperties.getSecurity().getAuthentication().getJwt().setBase64Secret(base64Secret);
SecurityMetersService securityMetersService = new SecurityMetersService(new SimpleMeterRegistry());
tokenProvider = new TokenProvider(jHipsterProperties, securityMetersService, applicationProperties);
tokenProvider = new TokenProvider(jHipsterProperties, securityMetersService);
key = Keys.hmacShaKeyFor(Decoders.BASE64.decode(base64Secret));
ReflectionTestUtils.setField(tokenProvider, "key", key);
......@@ -93,14 +91,13 @@ class TokenProviderTest {
@Test
void testKeyIsSetFromSecretWhenSecretIsNotEmpty() {
ApplicationProperties applicationProperties = new ApplicationProperties();
final String secret = "NwskoUmKHZtzGRKJKVjsJF7BtQMMxNWi";
JHipsterProperties jHipsterProperties = new JHipsterProperties();
jHipsterProperties.getSecurity().getAuthentication().getJwt().setSecret(secret);
SecurityMetersService securityMetersService = new SecurityMetersService(new SimpleMeterRegistry());
TokenProvider tokenProvider = new TokenProvider(jHipsterProperties, securityMetersService, applicationProperties);
TokenProvider tokenProvider = new TokenProvider(jHipsterProperties, securityMetersService);
Key key = (Key) ReflectionTestUtils.getField(tokenProvider, "key");
assertThat(key).isNotNull().isEqualTo(Keys.hmacShaKeyFor(secret.getBytes(StandardCharsets.UTF_8)));
......@@ -108,15 +105,13 @@ class TokenProviderTest {
@Test
void testKeyIsSetFromBase64SecretWhenSecretIsEmpty() {
ApplicationProperties applicationProperties = new ApplicationProperties();
final String base64Secret = "fd54a45s65fds737b9aafcb3412e07ed99b267f33413274720ddbb7f6c5e64e9f14075f2d7ed041592f0b7657baf8";
JHipsterProperties jHipsterProperties = new JHipsterProperties();
jHipsterProperties.getSecurity().getAuthentication().getJwt().setBase64Secret(base64Secret);
SecurityMetersService securityMetersService = new SecurityMetersService(new SimpleMeterRegistry());
TokenProvider tokenProvider = new TokenProvider(jHipsterProperties, securityMetersService, applicationProperties);
TokenProvider tokenProvider = new TokenProvider(jHipsterProperties, securityMetersService);
Key key = (Key) ReflectionTestUtils.getField(tokenProvider, "key");
assertThat(key).isNotNull().isEqualTo(Keys.hmacShaKeyFor(Decoders.BASE64.decode(base64Secret)));
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment