From 91c95de67e2ddbff9c88e7b7955b21bd095a947e Mon Sep 17 00:00:00 2001 From: KKlochko Date: Fri, 1 Dec 2023 14:07:06 +0200 Subject: [PATCH] Add the factory for Token model. --- .../models/factories/TokenFactory.java | 33 +++++++++++++++++++ .../models/factories/TokenFactorySpec.groovy | 32 ++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/main/java/space/kklochko/spring_rest_example/models/factories/TokenFactory.java create mode 100644 src/test/groovy/space/kklochko/spring_rest_example/models/factories/TokenFactorySpec.groovy diff --git a/src/main/java/space/kklochko/spring_rest_example/models/factories/TokenFactory.java b/src/main/java/space/kklochko/spring_rest_example/models/factories/TokenFactory.java new file mode 100644 index 0000000..64846ff --- /dev/null +++ b/src/main/java/space/kklochko/spring_rest_example/models/factories/TokenFactory.java @@ -0,0 +1,33 @@ +package space.kklochko.spring_rest_example.models.factories; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.springframework.beans.factory.annotation.Autowired; +import space.kklochko.spring_rest_example.models.Token; +import space.kklochko.spring_rest_example.security.tokens.StringTokenFactory; + +@AllArgsConstructor +@Getter +public class TokenFactory { + public StringTokenFactory factory; + + public TokenFactory() { + setFactory(null); + } + + public Token create(String username, String role) { + Token token = new Token(); + + token.setUsername(username); + token.setRole(role); + token.setToken(getFactory().create(username)); + + return token; + } + + @Autowired + public void setFactory(StringTokenFactory factory) { + this.factory = factory; + } +} + diff --git a/src/test/groovy/space/kklochko/spring_rest_example/models/factories/TokenFactorySpec.groovy b/src/test/groovy/space/kklochko/spring_rest_example/models/factories/TokenFactorySpec.groovy new file mode 100644 index 0000000..9638af1 --- /dev/null +++ b/src/test/groovy/space/kklochko/spring_rest_example/models/factories/TokenFactorySpec.groovy @@ -0,0 +1,32 @@ +package space.kklochko.spring_rest_example.models.factories + +import space.kklochko.spring_rest_example.security.tokens.StringTokenFactory +import spock.lang.Specification +import spock.lang.Subject + +class TokenFactorySpec extends Specification { + def "Create a token for a user"() { + given: "I have a string token factory" + def stringTokenFactory = Mock(StringTokenFactory) + stringTokenFactory.create(_) >> "token" + + and: "I have a token factory" + @Subject + def factory = new TokenFactory(stringTokenFactory) + + and: "I have a username and a role" + String username = "user" + String role = "USER" + + when: "I create a token" + def token = factory.create(username, role) + + then: "The token is the same if the same input data." + with(token) { + getUsername() == username + getRole() == role + getToken() == "token" + } + } +} +