From 860e5379e6f70ad11be3fc83597cce1c8b78f54e Mon Sep 17 00:00:00 2001 From: dantanxiaotian Date: Wed, 20 Mar 2019 16:06:24 -0600 Subject: [PATCH] PAN-15 UserService.java and completed UserSservice integration test --- ...damonium-theorem-prover.main.kotlin_module | Bin 16 -> 0 bytes .../scripts/mysql/local_development.sql | 1 + .../repository/AccountsRepository.java | 3 + .../controller/AccountControllerTest.java | 1 + .../services/UserServiceIntegrationTest.java | 24 +++- .../msudenver/tsp/services/RestService.java | 9 +- .../msudenver/tsp/services/UserService.java | 115 +++++++++++++++++- .../msudenver/tsp/services/dto/Account.java | 1 + .../tsp/services/factory/RequestFactory.java | 4 + 9 files changed, 148 insertions(+), 10 deletions(-) delete mode 100644 out/production/classes/META-INF/edu.msudenver.tsp.pandamonium-theorem-prover.main.kotlin_module diff --git a/out/production/classes/META-INF/edu.msudenver.tsp.pandamonium-theorem-prover.main.kotlin_module b/out/production/classes/META-INF/edu.msudenver.tsp.pandamonium-theorem-prover.main.kotlin_module deleted file mode 100644 index 8fb60192d378759239a3ecbf60eac8c8de446e9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|UH|}6022TJ diff --git a/persistence/scripts/mysql/local_development.sql b/persistence/scripts/mysql/local_development.sql index 1f885cc..eb1549c 100644 --- a/persistence/scripts/mysql/local_development.sql +++ b/persistence/scripts/mysql/local_development.sql @@ -16,6 +16,7 @@ values ('admin', 'secret', true), ('BrittanyBi', 'secret', true), ('lanlanzeliu', 'secret', true), ('tramanh305', 'secret', true); + create table definitions ( id int not null auto_increment primary key unique, name varchar(200) not null, diff --git a/persistence/src/main/java/edu/msudenver/tsp/persistence/repository/AccountsRepository.java b/persistence/src/main/java/edu/msudenver/tsp/persistence/repository/AccountsRepository.java index 454cd77..542ffe8 100644 --- a/persistence/src/main/java/edu/msudenver/tsp/persistence/repository/AccountsRepository.java +++ b/persistence/src/main/java/edu/msudenver/tsp/persistence/repository/AccountsRepository.java @@ -6,4 +6,7 @@ import org.springframework.stereotype.Repository; @Repository public interface AccountsRepository extends CrudRepository { + + + } diff --git a/persistence/src/test/java/edu/msudenver/tsp/persistence/controller/AccountControllerTest.java b/persistence/src/test/java/edu/msudenver/tsp/persistence/controller/AccountControllerTest.java index 0b88630..8dd69ca 100644 --- a/persistence/src/test/java/edu/msudenver/tsp/persistence/controller/AccountControllerTest.java +++ b/persistence/src/test/java/edu/msudenver/tsp/persistence/controller/AccountControllerTest.java @@ -33,6 +33,7 @@ public class AccountControllerTest { @Test public void testGetAllAccounts() { + final AccountDto accountDto = createAccount(); final List accountDtoList = new ArrayList<>(); accountDtoList.add(accountDto); diff --git a/services/src/integrationTest/java/edu/msudenver/tsp/services/UserServiceIntegrationTest.java b/services/src/integrationTest/java/edu/msudenver/tsp/services/UserServiceIntegrationTest.java index c3a71d0..c006236 100644 --- a/services/src/integrationTest/java/edu/msudenver/tsp/services/UserServiceIntegrationTest.java +++ b/services/src/integrationTest/java/edu/msudenver/tsp/services/UserServiceIntegrationTest.java @@ -9,7 +9,6 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import java.text.ParseException; import java.util.Date; import java.util.Optional; @@ -24,7 +23,7 @@ public class UserServiceIntegrationTest { private UserService userService; @Test - public void testCreateNewUser() throws ParseException { + public void testUserService(){ final Account testAccount = new Account(); testAccount.setUsername("test user"); testAccount.setPassword("test password"); @@ -38,5 +37,26 @@ public class UserServiceIntegrationTest { assertEquals("test user", returnedAccount.getUsername()); assertEquals("test password", returnedAccount.getPassword()); assertFalse(returnedAccount.isAdministratorStatus()); + + final Optional updatePasswordTestCreatedAccount = userService.updatePassword(returnedAccount, "password"); + + assertTrue(updatePasswordTestCreatedAccount.isPresent()); + final Account returnedUpdatedPasswordAccount = updatePasswordTestCreatedAccount.get(); + assertEquals("test user", returnedUpdatedPasswordAccount.getUsername()); + assertEquals("password", returnedUpdatedPasswordAccount.getPassword()); + assertFalse(returnedAccount.isAdministratorStatus()); + + final Optional updateUsernameTestCreatedAccount = userService.updateUsername(returnedUpdatedPasswordAccount, "user"); + + assertTrue(updateUsernameTestCreatedAccount.isPresent()); + final Account returnedUpdatedUsernameAccount = updateUsernameTestCreatedAccount.get(); + assertEquals("user", returnedUpdatedUsernameAccount.getUsername()); + assertEquals("password", returnedUpdatedUsernameAccount.getPassword()); + assertFalse(returnedAccount.isAdministratorStatus()); + + final boolean result = userService.deleteAccount(returnedUpdatedUsernameAccount); + + assertTrue(result); } + } diff --git a/services/src/main/java/edu/msudenver/tsp/services/RestService.java b/services/src/main/java/edu/msudenver/tsp/services/RestService.java index 78f0cb9..a8d043a 100644 --- a/services/src/main/java/edu/msudenver/tsp/services/RestService.java +++ b/services/src/main/java/edu/msudenver/tsp/services/RestService.java @@ -43,16 +43,21 @@ public class RestService { return send(requestFactory.post(uri, requestJson), null, connectionTimeout, socketTimeout, type); } + Optional patch(final String uri, final String requestJson, final TypeToken type, final Integer connectionTimeout, final Integer socketTimeout) { + LOG.info("Sending Patch {} with body: {}", uri, requestJson); + return send(requestFactory.patch(uri, requestJson), null, connectionTimeout, socketTimeout, type); + } Optional post(final String uri, final String requestJson, final Integer connectionTimeout, final Integer socketTimeout) { LOG.info("Sending POST {} with body: {}", uri, requestJson); return send(requestFactory.post(uri, requestJson), null, connectionTimeout, socketTimeout); } - Optional put(final String uri, final String requestJson, final TypeToken type, final Integer connectionTimeout, final Integer socketTimeout, final String auth) { + Optional put(final String uri, final String requestJson, final TypeToken type, final Integer connectionTimeout, final Integer socketTimeout) { LOG.info("Sending PUT {} with body: {}", uri, requestJson); - return send(requestFactory.put(uri, requestJson), auth, connectionTimeout, socketTimeout, type); + return send(requestFactory.put(uri, requestJson), null, connectionTimeout, socketTimeout, type); } + private Optional send(final Request request, final String auth, final Integer connectionTimeout, final Integer socketTimeout, final TypeToken type) { try { final Optional optionalHttpResponse = send(request, auth, connectionTimeout, socketTimeout); diff --git a/services/src/main/java/edu/msudenver/tsp/services/UserService.java b/services/src/main/java/edu/msudenver/tsp/services/UserService.java index 0862ae5..9cb0b46 100644 --- a/services/src/main/java/edu/msudenver/tsp/services/UserService.java +++ b/services/src/main/java/edu/msudenver/tsp/services/UserService.java @@ -6,6 +6,7 @@ import edu.msudenver.tsp.services.dto.Account; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import java.time.Duration; @@ -16,16 +17,19 @@ import java.util.Optional; @Service public class UserService { private final RestService restService; - @Value("${persistence.api.connection.timeout.milliseconds}") private int connectionTimeoutMilliseconds; - @Value("${persistence.api.socket.timeout.milliseconds}") private int socketTimeoutMilliseconds; - @Value("${persistence.api.base.url}") private String persistenceApiBaseUrl; + @Value("${persistence.api.connection.timeout.milliseconds}") + private int connectionTimeoutMilliseconds; + @Value("${persistence.api.socket.timeout.milliseconds}") + private int socketTimeoutMilliseconds; + @Value("${persistence.api.base.url}") + private String persistenceApiBaseUrl; @Autowired public UserService(final RestService restService) { this.restService = restService; } - public Optional createNewAccount(final Account account) { + public Optional createNewAccount(final Account account) { if (account == null) { LOG.error("Given null account, returning {}"); return Optional.empty(); @@ -33,7 +37,8 @@ public class UserService { final Instant start = Instant.now(); try { - final TypeToken typeToken = new TypeToken() {}; + final TypeToken typeToken = new TypeToken() { + }; final Optional persistenceApiResponse = restService.post(persistenceApiBaseUrl + "accounts/", new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").create().toJson(account), typeToken, @@ -41,7 +46,7 @@ public class UserService { socketTimeoutMilliseconds); if (persistenceApiResponse.isPresent()) { - LOG.info("Returning {}", persistenceApiResponse.get()); + LOG.info("Returning {}", persistenceApiResponse); } else { LOG.info("Unable to create new account {}", account.toString()); } @@ -54,4 +59,102 @@ public class UserService { LOG.info("Create new account request took {} ms", Duration.between(start, Instant.now()).toMillis()); } } + + public Optional updatePassword(final Account account , final String password){ + + if(account ==null){ + LOG.error("user not exist, returning{}"); + return Optional.empty(); + } + + final Integer id = account.getId(); + account.setPassword(password); + final Instant start = Instant.now(); + + try{ + final String auth = ""; + final TypeToken typeToken = new TypeToken(){}; + final Optional persistenceApiResponse = restService.patch(persistenceApiBaseUrl + "accounts/"+id, + new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").create().toJson(account), + typeToken, + connectionTimeoutMilliseconds, + socketTimeoutMilliseconds); + + if (persistenceApiResponse.isPresent()) { + LOG.info("Returning {}", persistenceApiResponse.get()); + } else { + LOG.info("Unable to update password for account {}",account.toString()); + } + + return persistenceApiResponse; + } catch (final Exception e) { + LOG.error("Error updating account {}", e); + return Optional.empty(); + } finally { + LOG.info("Update account request took {} ms", Duration.between(start, Instant.now()).toMillis()); + } + } + + public Optional updateUsername(final Account account , final String username){ + + if(account ==null){ + LOG.error("user not exist, returning{}"); + return Optional.empty(); + } + + final Integer id = account.getId(); + account.setUsername(username); + final Instant start = Instant.now(); + + try{ + final String auth = ""; + final TypeToken typeToken = new TypeToken(){}; + final Optional persistenceApiResponse = restService.patch(persistenceApiBaseUrl + "accounts/"+id, + new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").create().toJson(account), + typeToken, + connectionTimeoutMilliseconds, + socketTimeoutMilliseconds); + + if (persistenceApiResponse.isPresent()) { + LOG.info("Returning {}", persistenceApiResponse.get()); + } else { + LOG.info("Unable to update username for account {}",account.toString()); + } + + return persistenceApiResponse; + } catch (final Exception e) { + LOG.error("Error updating account {}", e); + return Optional.empty(); + } finally { + LOG.info("Update account request took {} ms", Duration.between(start, Instant.now()).toMillis()); + } + } + public boolean deleteAccount(final Account account){ + if(account ==null){ + LOG.error("Username not exist, returning{}"); + return false; + } + final Integer id = account.getId(); + final Instant start = Instant.now(); + + try{ + + final boolean persistenceApiResponse = restService.delete(persistenceApiBaseUrl +"/accounts/"+id, + connectionTimeoutMilliseconds, + socketTimeoutMilliseconds, HttpStatus.NO_CONTENT ); + if(persistenceApiResponse){ + LOG.info("return {}", persistenceApiResponse); + } + else { + LOG.info("Unable to delete user {}",account.toString()); + } + + return persistenceApiResponse; + }catch (final Exception e) { + LOG.error("Error deleting user {}", e); + return false; + } finally { + LOG.info("delete user request took {} ms", Duration.between(start, Instant.now()).toMillis()); + } + } } diff --git a/services/src/main/java/edu/msudenver/tsp/services/dto/Account.java b/services/src/main/java/edu/msudenver/tsp/services/dto/Account.java index 1190dd8..b1a04d9 100644 --- a/services/src/main/java/edu/msudenver/tsp/services/dto/Account.java +++ b/services/src/main/java/edu/msudenver/tsp/services/dto/Account.java @@ -21,4 +21,5 @@ public class Account extends BaseDto implements Serializable { private static final long serialVersionUID = 7095627971593953734L; + } diff --git a/services/src/main/java/edu/msudenver/tsp/services/factory/RequestFactory.java b/services/src/main/java/edu/msudenver/tsp/services/factory/RequestFactory.java index 726b9a8..e108cd1 100644 --- a/services/src/main/java/edu/msudenver/tsp/services/factory/RequestFactory.java +++ b/services/src/main/java/edu/msudenver/tsp/services/factory/RequestFactory.java @@ -22,4 +22,8 @@ public class RequestFactory { public Request put(final String uri, final String requestJson) { return StringUtils.isNotBlank(requestJson) ? Request.Put(uri).bodyString(requestJson, ContentType.APPLICATION_JSON) : Request.Put(uri); } + + public Request patch(final String uri, final String requestJson) { + return StringUtils.isNotBlank(requestJson) ? Request.Patch(uri).bodyString(requestJson, ContentType.APPLICATION_JSON) : Request.Patch(uri); + } } \ No newline at end of file