Skip to content

Commit 886d13a

Browse files
committed
[java][social_login-01_base] Add base structure
1 parent 94f3d6f commit 886d13a

26 files changed

+207
-48
lines changed

Diff for: examples/java/java-social_login-01_base/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ dependencies {
1111
implementation 'org.apache.logging.log4j:log4j-core:2.12.1'
1212
implementation 'com.vlkan.log4j2:log4j2-logstash-layout:0.19'
1313

14-
testCompile 'org.junit.jupiter:junit-jupiter-api:5.5.1'
15-
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.1'
14+
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.2'
15+
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.2'
1616
}
1717

1818
test {

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/app/controller/login/EmailLoginPostController.java

-7
This file was deleted.

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/app/controller/login/TwitterLoginPostController.java

-7
This file was deleted.

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/app/controller/sign_up/EmailSignUpPostController.java

-7
This file was deleted.

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/app/controller/sign_up/TwitterSignUpPostController.java

-7
This file was deleted.

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/login/EmailLoginProvider.java renamed to examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/login/domain/EmailLoginProvider.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
package tv.codely.ecommerce.login;
1+
package tv.codely.ecommerce.login.domain;
22

33
public final class EmailLoginProvider extends LoginProvider {
44
private final String email;
55
private final String password;
66

77
public EmailLoginProvider(String email, String password, String ip) {
88
super("email", ip);
9+
910
this.email = email;
1011
this.password = password;
1112
}

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/login/FacebookLoginProvider.java renamed to examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/login/domain/FacebookLoginProvider.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
package tv.codely.ecommerce.login;
1+
package tv.codely.ecommerce.login.domain;
22

33
public final class FacebookLoginProvider extends LoginProvider {
44
private final String email;
55
private final String hash;
66

77
public FacebookLoginProvider(String email, String hash, String ip) {
88
super("facebook", ip);
9+
910
this.email = email;
1011
this.hash = hash;
1112
}

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/login/GitHubLoginProvider.java renamed to examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/login/domain/GitHubLoginProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package tv.codely.ecommerce.login;
1+
package tv.codely.ecommerce.login.domain;
22

33
public final class GitHubLoginProvider extends LoginProvider {
44
private final String username;

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/login/LoginProvider.java renamed to examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/login/domain/LoginProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package tv.codely.ecommerce.login;
1+
package tv.codely.ecommerce.login.domain;
22

33
public abstract class LoginProvider {
44
private String provider;

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/login/TwitterLoginProvider.java renamed to examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/login/domain/TwitterLoginProvider.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
package tv.codely.ecommerce.login;
1+
package tv.codely.ecommerce.login.domain;
22

33
public final class TwitterLoginProvider extends LoginProvider {
44
private String username;
55
private String token;
66

77
public TwitterLoginProvider(String username, String token, String ip) {
88
super("twitter", ip);
9+
910
this.username = username;
1011
this.token = token;
1112
}

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/login_attempt/LoginAttempt.java

-7
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package tv.codely.ecommerce.login_attempt.application.add;
2+
3+
import tv.codely.ecommerce.login_attempt.domain.LoginAttempt;
4+
import tv.codely.ecommerce.login_attempt.domain.LoginAttemptRepository;
5+
6+
public final class LoginAttemptAdder {
7+
private final LoginAttemptRepository repository;
8+
9+
public LoginAttemptAdder(LoginAttemptRepository repository) {
10+
this.repository = repository;
11+
}
12+
13+
public void add(LoginAttempt loginAttempt) throws Exception {
14+
this.repository.save(loginAttempt);
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package tv.codely.ecommerce.login_attempt.domain;
2+
3+
public final class EmailLoginAttempt extends LoginAttempt {
4+
private final String email;
5+
6+
public EmailLoginAttempt(String ip, String email) {
7+
super(ip);
8+
9+
this.email = email;
10+
}
11+
12+
public String email() {
13+
return email;
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package tv.codely.ecommerce.login_attempt.domain;
2+
3+
public abstract class LoginAttempt {
4+
private final String ip;
5+
6+
public LoginAttempt(String ip) {
7+
this.ip = ip;
8+
}
9+
10+
public String ip() {
11+
return ip;
12+
}
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package tv.codely.ecommerce.login_attempt.domain;
2+
3+
import java.util.HashMap;
4+
5+
public interface LoginAttemptRepository {
6+
HashMap<String, String> save(LoginAttempt loginAttempt) throws Exception;
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package tv.codely.ecommerce.login_attempt.domain;
2+
3+
public final class TwitterLoginAttempt extends LoginAttempt {
4+
private final String username;
5+
6+
public TwitterLoginAttempt(String ip, String username) {
7+
super(ip);
8+
9+
this.username = username;
10+
}
11+
12+
public String username() {
13+
return username;
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package tv.codely.ecommerce.login_attempt.domain.format;
2+
3+
import tv.codely.ecommerce.login_attempt.domain.EmailLoginAttempt;
4+
5+
import java.util.HashMap;
6+
7+
public final class EmailLoginAttemptFormatter extends LoginAttemptFormatter<EmailLoginAttempt> {
8+
@Override
9+
public HashMap<String, String> format(EmailLoginAttempt loginAttempt) {
10+
return new HashMap<>() {{
11+
put("ip", loginAttempt.ip());
12+
put("email", loginAttempt.email());
13+
}};
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package tv.codely.ecommerce.login_attempt.domain.format;
2+
3+
import tv.codely.ecommerce.login_attempt.domain.LoginAttempt;
4+
5+
import java.util.HashMap;
6+
7+
public abstract class LoginAttemptFormatter<T extends LoginAttempt> {
8+
public abstract HashMap<String, String> format(T loginAttempt);
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package tv.codely.ecommerce.login_attempt.domain.format;
2+
3+
import tv.codely.ecommerce.login_attempt.domain.TwitterLoginAttempt;
4+
5+
import java.util.HashMap;
6+
7+
public final class TwitterLoginAttemptFormatter extends LoginAttemptFormatter<TwitterLoginAttempt> {
8+
@Override
9+
public HashMap<String, String> format(TwitterLoginAttempt loginAttempt) {
10+
return new HashMap<>() {{
11+
put("ip", loginAttempt.ip());
12+
put("username", loginAttempt.username());
13+
}};
14+
}
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package tv.codely.ecommerce.login_attempt.infrastructure;
2+
3+
import tv.codely.ecommerce.login_attempt.domain.EmailLoginAttempt;
4+
import tv.codely.ecommerce.login_attempt.domain.LoginAttempt;
5+
import tv.codely.ecommerce.login_attempt.domain.LoginAttemptRepository;
6+
import tv.codely.ecommerce.login_attempt.domain.TwitterLoginAttempt;
7+
import tv.codely.ecommerce.login_attempt.domain.format.EmailLoginAttemptFormatter;
8+
import tv.codely.ecommerce.login_attempt.domain.format.LoginAttemptFormatter;
9+
import tv.codely.ecommerce.login_attempt.domain.format.TwitterLoginAttemptFormatter;
10+
11+
import java.util.HashMap;
12+
13+
public final class SdkAuth0LoginAttemptRepository implements LoginAttemptRepository {
14+
@Override
15+
public HashMap<String, String> save(LoginAttempt loginAttempt) throws Exception {
16+
LoginAttemptFormatter formatter;
17+
18+
if (loginAttempt instanceof TwitterLoginAttempt) {
19+
formatter = new TwitterLoginAttemptFormatter();
20+
} else if (loginAttempt instanceof EmailLoginAttempt) {
21+
formatter = new EmailLoginAttemptFormatter();
22+
} else {
23+
throw new Exception("There are no formatters for that attempt");
24+
}
25+
26+
return formatter.format(loginAttempt);
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
package tv.codely.ecommerce.sign_up;
1+
package tv.codely.ecommerce.sign_up.domain;
22

33
public final class EmailSignUpProvider extends SignUpProvider {
44
private final String email;
55
private final String password;
66

77
public EmailSignUpProvider(String email, String password) {
88
super("email");
9-
this.email = email;
9+
10+
this.email = email;
1011
this.password = password;
1112
}
1213
}

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/sign_up/FacebookSignUpProvider.java renamed to examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/sign_up/domain/FacebookSignUpProvider.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
package tv.codely.ecommerce.sign_up;
1+
package tv.codely.ecommerce.sign_up.domain;
22

33
public final class FacebookSignUpProvider extends SignUpProvider {
44
private final String email;
55
private final String hash;
66

77
public FacebookSignUpProvider(String email, String hash) {
88
super("facebook");
9+
910
this.email = email;
1011
this.hash = hash;
1112
}

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/sign_up/GitHubSignUpProvider.java renamed to examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/sign_up/domain/GitHubSignUpProvider.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
package tv.codely.ecommerce.sign_up;
1+
package tv.codely.ecommerce.sign_up.domain;
22

33
public final class GitHubSignUpProvider extends SignUpProvider {
44
private final String username;
55
private final String secretKey;
66

77
public GitHubSignUpProvider(String username, String secretKey) {
88
super("github");
9+
910
this.username = username;
1011
this.secretKey = secretKey;
1112
}

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/sign_up/SignUpProvider.java renamed to examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/sign_up/domain/SignUpProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package tv.codely.ecommerce.sign_up;
1+
package tv.codely.ecommerce.sign_up.domain;
22

33
public abstract class SignUpProvider {
44
private String provider;

Diff for: examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/sign_up/TwitterSignUpProvider.java renamed to examples/java/java-social_login-01_base/src/main/java/tv/codely/ecommerce/sign_up/domain/TwitterSignUpProvider.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
package tv.codely.ecommerce.sign_up;
1+
package tv.codely.ecommerce.sign_up.domain;
22

33
public final class TwitterSignUpProvider extends SignUpProvider {
44
private String username;
55
private String token;
66

77
public TwitterSignUpProvider(String username, String token) {
88
super("twitter");
9+
910
this.username = username;
1011
this.token = token;
1112
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package tv.codely.ecommerce.login_attempt.infrastructure;
2+
3+
import org.junit.jupiter.api.BeforeEach;
4+
import org.junit.jupiter.api.Test;
5+
import tv.codely.ecommerce.login_attempt.domain.EmailLoginAttempt;
6+
import tv.codely.ecommerce.login_attempt.domain.LoginAttempt;
7+
import tv.codely.ecommerce.login_attempt.domain.TwitterLoginAttempt;
8+
9+
import java.util.HashMap;
10+
11+
import static org.junit.jupiter.api.Assertions.assertEquals;
12+
import static org.junit.jupiter.api.Assertions.assertThrows;
13+
14+
final class SdkAuth0LoginAttemptRepositoryShould {
15+
private SdkAuth0LoginAttemptRepository repository;
16+
17+
@BeforeEach
18+
protected void setUp() {
19+
repository = new SdkAuth0LoginAttemptRepository();
20+
}
21+
22+
@Test
23+
void add_an_email_login_attempt() throws Exception {
24+
EmailLoginAttempt loginAttempt = new EmailLoginAttempt("192.168.1.1", "[email protected]");
25+
HashMap<String, String> expected = new HashMap<>() {{
26+
put("ip", "192.168.1.1");
27+
put("email", "[email protected]");
28+
}};
29+
30+
assertEquals(expected, repository.save(loginAttempt));
31+
}
32+
33+
@Test
34+
void add_a_twitter_login_attempt() throws Exception {
35+
TwitterLoginAttempt loginAttempt = new TwitterLoginAttempt("192.168.1.2", "codelytv");
36+
HashMap<String, String> expected = new HashMap<>() {{
37+
put("ip", "192.168.1.2");
38+
put("username", "codelytv");
39+
}};
40+
41+
assertEquals(expected, repository.save(loginAttempt));
42+
}
43+
44+
@Test
45+
void throw_an_exception_with_an_unknown_login_attempt() {
46+
LoginAttempt loginAttempt = new LoginAttempt("192.168.1.3") {
47+
public String name() {
48+
return "unknown";
49+
}
50+
};
51+
52+
assertThrows(Exception.class, () -> repository.save(loginAttempt));
53+
}
54+
}

0 commit comments

Comments
 (0)