Skip to content

Commit 4b4f61d

Browse files
Thomasludomikula
Thomas
authored andcommitted
remove isTest
Google Login Success Case
1 parent debd7ee commit 4b4f61d

File tree

4 files changed

+81
-78
lines changed

4 files changed

+81
-78
lines changed

server/api-service/lowcoder-server/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,12 @@
240240
<groupId>org.springframework</groupId>
241241
<artifactId>spring-aspects</artifactId>
242242
</dependency>
243+
<dependency>
244+
<groupId>org.wiremock</groupId>
245+
<artifactId>wiremock-jetty12</artifactId>
246+
<version>3.6.0</version>
247+
<scope>test</scope>
248+
</dependency>
243249
</dependencies>
244250

245251
<dependencyManagement>

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/request/oauth2/request/GenericAuthRequest.java

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,14 @@
2323
* This class is for Generic Auth Request
2424
*/
2525
public class GenericAuthRequest extends AbstractOauth2Request<Oauth2GenericAuthConfig>{
26-
@Setter
27-
private static boolean isTest = false;
28-
@Setter
29-
private static boolean testCase01 = false;
3026

3127
public GenericAuthRequest(Oauth2GenericAuthConfig context) {
3228
super(context, new GenericOAuthProviderSource(context));
3329
}
3430

3531
@Override
3632
protected Mono<AuthToken> getAuthToken(OAuth2RequestContext context) {
37-
if(isTest) {
38-
AuthToken authToken = AuthToken.builder().build();
39-
return Mono.just(authToken);
40-
} else return WebClientBuildHelper.builder()
33+
return WebClientBuildHelper.builder()
4134
.systemProxy()
4235
.timeoutMs(HTTP_TIMEOUT)
4336
.build()
@@ -61,11 +54,7 @@ protected Mono<AuthToken> getAuthToken(OAuth2RequestContext context) {
6154

6255
@Override
6356
protected Mono<AuthToken> refreshAuthToken(String refreshToken) {
64-
if(isTest) {
65-
if(testCase01) return Mono.error(new AuthException(true));
66-
AuthToken authToken = AuthToken.builder().build();
67-
return Mono.just(authToken);
68-
} else return WebClientBuildHelper.builder()
57+
return WebClientBuildHelper.builder()
6958
.systemProxy()
7059
.timeoutMs(HTTP_TIMEOUT)
7160
.build()
@@ -87,13 +76,6 @@ protected Mono<AuthToken> refreshAuthToken(String refreshToken) {
8776

8877
@Override
8978
protected Mono<AuthUser> getAuthUser(AuthToken authToken) {
90-
if(isTest) {
91-
AuthUser authUser = AuthUser.builder()
92-
.uid("uId")
93-
.username("dummyname")
94-
.build();
95-
return Mono.just(authUser);
96-
}
9779
return WebClientBuildHelper.builder()
9880
.systemProxy()
9981
.timeoutMs(HTTP_TIMEOUT)

server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/authentication/GenericAuthenticateTest.java

Lines changed: 55 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,46 @@
11
package org.lowcoder.api.authentication;
22

3-
import com.google.common.collect.Iterables;
4-
import org.junit.Test;
5-
import org.junit.runner.RunWith;
6-
import org.lowcoder.api.authentication.request.AuthRequest;
7-
import org.lowcoder.api.authentication.request.AuthRequestFactory;
8-
import org.lowcoder.api.authentication.request.oauth2.Oauth2AuthRequestFactory;
9-
import org.lowcoder.api.authentication.request.oauth2.request.GenericAuthRequest;
10-
import org.lowcoder.api.authentication.service.AuthenticationApiServiceImpl;
3+
import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo;
4+
import com.github.tomakehurst.wiremock.junit5.WireMockTest;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.junit.jupiter.api.Test;
7+
import org.junit.jupiter.api.extension.ExtendWith;
118
import org.lowcoder.api.common.mockuser.WithMockUser;
12-
import org.lowcoder.api.framework.view.ResponseView;
139
import org.lowcoder.domain.authentication.AuthenticationService;
14-
import org.lowcoder.domain.authentication.AuthenticationServiceImpl;
1510
import org.lowcoder.domain.authentication.FindAuthConfig;
16-
import org.lowcoder.domain.authentication.context.AuthRequestContext;
17-
import org.lowcoder.domain.encryption.EncryptionService;
18-
import org.lowcoder.domain.user.model.*;
11+
import org.lowcoder.domain.organization.model.Organization;
12+
import org.lowcoder.domain.user.model.User;
13+
import org.lowcoder.domain.user.model.UserState;
1914
import org.lowcoder.domain.user.repository.UserRepository;
2015
import org.lowcoder.sdk.auth.AbstractAuthConfig;
16+
import org.lowcoder.sdk.auth.Oauth2GenericAuthConfig;
17+
import org.lowcoder.sdk.auth.constants.AuthTypeConstants;
2118
import org.lowcoder.sdk.constants.AuthSourceConstants;
2219
import org.lowcoder.sdk.constants.GlobalContext;
23-
import org.mockito.InjectMocks;
24-
import org.mockito.Mock;
2520
import org.mockito.Mockito;
21+
import org.mockito.junit.jupiter.MockitoExtension;
2622
import org.springframework.beans.factory.annotation.Autowired;
2723
import org.springframework.boot.test.context.SpringBootTest;
28-
import org.springframework.boot.test.mock.mockito.MockBean;
29-
import org.springframework.http.ResponseCookie;
3024
import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
3125
import org.springframework.mock.web.server.MockServerWebExchange;
32-
import org.springframework.test.context.junit4.SpringRunner;
33-
import org.springframework.util.MultiValueMap;
26+
import org.springframework.test.context.ActiveProfiles;
3427
import reactor.core.publisher.Mono;
3528
import reactor.test.StepVerifier;
3629
import reactor.util.context.Context;
3730

38-
import java.util.Objects;
39-
40-
import static org.junit.Assert.*;
41-
import static org.junit.Assert.assertTrue;
42-
import static org.mockito.ArgumentMatchers.any;
31+
import static com.github.tomakehurst.wiremock.client.WireMock.*;
32+
import static org.junit.jupiter.api.Assertions.assertEquals;
33+
import static org.junit.jupiter.api.Assertions.assertTrue;
4334

4435
/**
4536
* This class is for testing GenericAuth feature
4637
*/
38+
@ActiveProfiles("test")
4739
@SpringBootTest
48-
@RunWith(SpringRunner.class)
40+
//@RunWith(SpringRunner.class)
41+
@WireMockTest
42+
@ExtendWith(MockitoExtension.class)
43+
@Slf4j
4944
public class GenericAuthenticateTest {
5045

5146
@Autowired
@@ -57,54 +52,56 @@ public class GenericAuthenticateTest {
5752

5853
@Test
5954
@WithMockUser
60-
public void testGoogleLoginSuccess() {
61-
String source = AuthSourceConstants.GOOGLE;
62-
String code = "test-code-123456";
63-
String orgId = "org01";
64-
String redirectUrl = "https://test.com";
65-
66-
GenericAuthRequest.setTest(true);
67-
String uid = "uId";
68-
69-
MockServerHttpRequest request = MockServerHttpRequest.post("").build();
70-
MockServerWebExchange exchange = MockServerWebExchange.builder(request).build();
71-
72-
var authId = getGenericAuthConfigId(orgId).block();
73-
Mono<User> userMono = authenticationController.loginWithThirdParty(authId, source, code, null, redirectUrl, orgId, exchange)
74-
.then(userRepository.findByConnections_SourceAndConnections_RawId(source, uid));
55+
public void testGoogleLoginSuccess(WireMockRuntimeInfo wmRuntimeInfo) {
56+
log.info("Running mock server on port: {}", wmRuntimeInfo.getHttpPort());
57+
//Begin mocking services
58+
var authConfig = Oauth2GenericAuthConfig.builder()
59+
.source(AuthSourceConstants.GOOGLE)
60+
.sourceName(AuthSourceConstants.GOOGLE_NAME)
61+
.enable(true)
62+
.enableRegister(true)
63+
.authType(AuthTypeConstants.GENERIC)
64+
.clientId("clientid")
65+
.clientSecret("clientsecret")
66+
.sourceDescription("Google Auth")
67+
.sourceIcon("")
68+
.sourceCategory("cat")
69+
.issuerUri("http://google.com")
70+
.authorizationEndpoint(wmRuntimeInfo.getHttpBaseUrl() + "/oauth2/v4/token")
71+
.tokenEndpoint(wmRuntimeInfo.getHttpBaseUrl() + "/oauth2/v4/token")
72+
.userInfoEndpoint(wmRuntimeInfo.getHttpBaseUrl() + "/oauth2/v2/userinfo")
73+
.scope("scope")
74+
.userInfoIntrospection(true)
75+
.build();
76+
77+
var organization = Organization.builder().build();
78+
var mockAuthConfig = new FindAuthConfig(authConfig, organization);
79+
Mockito.when(authenticationService.findAuthConfigByAuthId(Mockito.any(), Mockito.any())).thenReturn(Mono.just(mockAuthConfig));
80+
Mockito.when(authenticationService.findAuthConfigBySource(Mockito.any(), Mockito.any())).thenReturn(Mono.just(mockAuthConfig));
81+
82+
stubFor(post(urlPathEqualTo("/oauth2/v4/token"))
83+
.willReturn(okJson("{\"access_token\":\"ya29.a0AfH6SMB...\",\"expires_in\":3600,\"token_type\":\"Bearer\",\"scope\":\"https://www.googleapis.com/auth/userinfo.profile\"}")));
84+
stubFor(get(urlPathEqualTo("/oauth2/v2/userinfo"))
85+
.willReturn(okJson("{\"sub\":\"user001\",\"email\":\"user001@gmail.com\"}")));
86+
//
7587

76-
StepVerifier.create(userMono)
77-
.assertNext(user -> {
78-
assertEquals("dummyname", user.getName());
79-
assertEquals(UserState.ACTIVATED, user.getState());
80-
assertEquals(1, user.getConnections().size());
81-
assertTrue(user.getIsEnabled());
82-
})
83-
.verifyComplete();
84-
}
85-
86-
@Test
87-
@WithMockUser
88-
public void testGoogleLoginWithNoRefreshSuccess() {
8988
String source = AuthSourceConstants.GOOGLE;
9089
String code = "test-code-123456";
9190
String orgId = "org01";
9291
String redirectUrl = "https://test.com";
9392

94-
GenericAuthRequest.setTest(true);
95-
GenericAuthRequest.setTestCase01(true);
96-
String uid = "uId";
93+
String uid = "user001";
9794

9895
MockServerHttpRequest request = MockServerHttpRequest.post("").build();
9996
MockServerWebExchange exchange = MockServerWebExchange.builder(request).build();
10097

10198
var authId = getGenericAuthConfigId(orgId).block();
102-
Mono<User> userMono = authenticationController.loginWithThirdParty(authId, source, code, null, redirectUrl, orgId, exchange)
99+
Mono<User> userMono = authenticationController.loginWithThirdParty(authId, source, code, null, redirectUrl, orgId, exchange).hasElement()
103100
.then(userRepository.findByConnections_SourceAndConnections_RawId(source, uid));
104101

105102
StepVerifier.create(userMono)
106103
.assertNext(user -> {
107-
assertEquals("dummyname", user.getName());
104+
assertEquals("user001@gmail.com", user.getName());
108105
assertEquals(UserState.ACTIVATED, user.getState());
109106
assertEquals(1, user.getConnections().size());
110107
assertTrue(user.getIsEnabled());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.lowcoder.api.configurations;
2+
3+
import org.lowcoder.domain.authentication.AuthenticationServiceImpl;
4+
import org.mockito.Mockito;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
import org.springframework.context.annotation.Primary;
8+
import org.springframework.context.annotation.Profile;
9+
10+
@Profile("test")
11+
@Configuration
12+
public class AuthenticactionServiceTestConfiguration {
13+
@Bean
14+
@Primary
15+
public AuthenticationServiceImpl authenticationService() {
16+
return Mockito.mock(AuthenticationServiceImpl.class);
17+
}
18+
}

0 commit comments

Comments
 (0)