Search in sources :

Example 21 with DatabaseException

use of com.sanctionco.thunder.dao.DatabaseException in project thunder by RohanNagar.

the class MongoDbUsersDaoTest method testInsertTimeout.

@Test
void testInsertTimeout() {
    MongoCollection<Document> collection = mock(MongoCollection.class);
    var exception = mock(MongoWriteException.class);
    var error = mock(WriteError.class);
    MongoDbUsersDao usersDao = new MongoDbUsersDao(collection, MAPPER);
    when(exception.getError()).thenReturn(error);
    when(error.getCategory()).thenReturn(ErrorCategory.EXECUTION_TIMEOUT);
    doThrow(exception).when(collection).insertOne(any(Document.class));
    CompletionException e = assertThrows(CompletionException.class, () -> usersDao.insert(USER).join());
    assertTrue(e.getCause() instanceof DatabaseException);
    var exp = (DatabaseException) e.getCause();
    assertEquals(DatabaseException.Error.DATABASE_DOWN, exp.getError());
    verify(collection, times(1)).insertOne(argThat((Document doc) -> doc.containsKey("_id") && doc.containsKey("id") && doc.containsKey("version") && doc.containsKey("creation_time") && doc.containsKey("update_time") && doc.containsKey("document")));
}
Also used : CompletionException(java.util.concurrent.CompletionException) Document(org.bson.Document) BsonDocument(org.bson.BsonDocument) DatabaseException(com.sanctionco.thunder.dao.DatabaseException) Test(org.junit.jupiter.api.Test)

Example 22 with DatabaseException

use of com.sanctionco.thunder.dao.DatabaseException in project thunder by RohanNagar.

the class MongoDbUsersDaoTest method testInsertRejected.

@Test
void testInsertRejected() {
    MongoCollection<Document> collection = mock(MongoCollection.class);
    var exception = mock(MongoWriteException.class);
    var error = mock(WriteError.class);
    MongoDbUsersDao usersDao = new MongoDbUsersDao(collection, MAPPER);
    when(exception.getError()).thenReturn(error);
    when(error.getCategory()).thenReturn(ErrorCategory.UNCATEGORIZED);
    doThrow(exception).when(collection).insertOne(any(Document.class));
    CompletionException e = assertThrows(CompletionException.class, () -> usersDao.insert(USER).join());
    assertTrue(e.getCause() instanceof DatabaseException);
    var exp = (DatabaseException) e.getCause();
    assertEquals(DatabaseException.Error.REQUEST_REJECTED, exp.getError());
    verify(collection, times(1)).insertOne(argThat((Document doc) -> doc.containsKey("_id") && doc.containsKey("id") && doc.containsKey("version") && doc.containsKey("creation_time") && doc.containsKey("update_time") && doc.containsKey("document")));
}
Also used : CompletionException(java.util.concurrent.CompletionException) Document(org.bson.Document) BsonDocument(org.bson.BsonDocument) DatabaseException(com.sanctionco.thunder.dao.DatabaseException) Test(org.junit.jupiter.api.Test)

Example 23 with DatabaseException

use of com.sanctionco.thunder.dao.DatabaseException in project thunder by RohanNagar.

the class MongoDbUsersDaoTest method testInsertWithRequestRejected.

@Test
void testInsertWithRequestRejected() {
    MongoCollection<Document> collection = mock(MongoCollection.class);
    MongoDbUsersDao usersDao = new MongoDbUsersDao(collection, MAPPER);
    MongoCommandException exception = mock(MongoCommandException.class);
    when(exception.getErrorMessage()).thenReturn("Test error");
    doThrow(exception).when(collection).insertOne(any(Document.class));
    CompletionException e = assertThrows(CompletionException.class, () -> usersDao.insert(USER).join());
    assertTrue(e.getCause() instanceof DatabaseException);
    var exp = (DatabaseException) e.getCause();
    assertEquals(DatabaseException.Error.REQUEST_REJECTED, exp.getError());
    verify(collection, times(1)).insertOne(argThat((Document doc) -> doc.containsKey("_id") && doc.containsKey("id") && doc.containsKey("version") && doc.containsKey("creation_time") && doc.containsKey("update_time") && doc.containsKey("document")));
}
Also used : MongoCommandException(com.mongodb.MongoCommandException) CompletionException(java.util.concurrent.CompletionException) Document(org.bson.Document) BsonDocument(org.bson.BsonDocument) DatabaseException(com.sanctionco.thunder.dao.DatabaseException) Test(org.junit.jupiter.api.Test)

Example 24 with DatabaseException

use of com.sanctionco.thunder.dao.DatabaseException in project thunder by RohanNagar.

the class MongoDbUsersDaoTest method testUpdateGetRequestRejected.

@Test
void testUpdateGetRequestRejected() {
    MongoCollection<Document> collection = mock(MongoCollection.class);
    MongoCommandException exception = mock(MongoCommandException.class);
    when(exception.getErrorMessage()).thenReturn("Test error");
    doThrow(exception).when(collection).find(any(Bson.class));
    MongoDbUsersDao usersDao = new MongoDbUsersDao(collection, MAPPER);
    CompletionException e = assertThrows(CompletionException.class, () -> usersDao.update(null, USER).join());
    assertTrue(e.getCause() instanceof DatabaseException);
    var exp = (DatabaseException) e.getCause();
    assertEquals(DatabaseException.Error.REQUEST_REJECTED, exp.getError());
    verify(collection, times(1)).find(eq(Filters.eq("_id", "test@test.com")));
}
Also used : MongoCommandException(com.mongodb.MongoCommandException) CompletionException(java.util.concurrent.CompletionException) Document(org.bson.Document) BsonDocument(org.bson.BsonDocument) DatabaseException(com.sanctionco.thunder.dao.DatabaseException) Bson(org.bson.conversions.Bson) Test(org.junit.jupiter.api.Test)

Example 25 with DatabaseException

use of com.sanctionco.thunder.dao.DatabaseException in project thunder by RohanNagar.

the class MongoDbUsersDaoTest method testExistingUserWithNewEmailDatabaseDown.

@Test
void testExistingUserWithNewEmailDatabaseDown() {
    MongoCollection<Document> collection = mock(MongoCollection.class);
    doThrow(MongoTimeoutException.class).when(collection).find(any(Bson.class));
    MongoDbUsersDao usersDao = new MongoDbUsersDao(collection, MAPPER);
    CompletionException e = assertThrows(CompletionException.class, () -> usersDao.update("originalemail@test.com", USER).join());
    assertTrue(e.getCause() instanceof DatabaseException);
    var exp = (DatabaseException) e.getCause();
    assertEquals(DatabaseException.Error.DATABASE_DOWN, exp.getError());
    verify(collection, times(1)).find(eq(Filters.eq("_id", "test@test.com")));
}
Also used : CompletionException(java.util.concurrent.CompletionException) Document(org.bson.Document) BsonDocument(org.bson.BsonDocument) DatabaseException(com.sanctionco.thunder.dao.DatabaseException) Bson(org.bson.conversions.Bson) Test(org.junit.jupiter.api.Test)

Aggregations

DatabaseException (com.sanctionco.thunder.dao.DatabaseException)29 Test (org.junit.jupiter.api.Test)25 CompletionException (java.util.concurrent.CompletionException)24 BsonDocument (org.bson.BsonDocument)24 Document (org.bson.Document)24 Bson (org.bson.conversions.Bson)18 MongoCommandException (com.mongodb.MongoCommandException)5 User (com.sanctionco.thunder.models.User)4 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)3 UsersDao (com.sanctionco.thunder.dao.UsersDao)3 Instant (java.time.Instant)3 Collections (java.util.Collections)3 HashMap (java.util.HashMap)3 Map (java.util.Map)3 Objects (java.util.Objects)3 UUID (java.util.UUID)3 CompletableFuture (java.util.concurrent.CompletableFuture)3 Nullable (javax.annotation.Nullable)3 Logger (org.slf4j.Logger)3 LoggerFactory (org.slf4j.LoggerFactory)3