Search in sources :

Example 26 with DatabaseException

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

the class MongoDbUsersDaoTest method testUpdatePutDatabaseDown.

@Test
void testUpdatePutDatabaseDown() {
    MongoCollection<Document> collection = mock(MongoCollection.class);
    FindIterable<Document> findIterable = mock(FindIterable.class);
    when(findIterable.first()).thenReturn(DOCUMENT);
    doReturn(findIterable).when(collection).find(any(Bson.class));
    doThrow(MongoTimeoutException.class).when(collection).updateOne(any(Bson.class), 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.DATABASE_DOWN, exp.getError());
    verify(collection, times(1)).find(any(Bson.class));
    verify(collection, times(1)).updateOne(argThat((Bson bson) -> {
        BsonDocument doc = bson.toBsonDocument(BsonDocument.class, MongoClientSettings.getDefaultCodecRegistry());
        return doc.containsKey("version");
    }), any(Bson.class));
}
Also used : BsonDocument(org.bson.BsonDocument) 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 27 with DatabaseException

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

the class MongoDbUsersDaoTest method testFindByEmailDatabaseDown.

@Test
void testFindByEmailDatabaseDown() {
    MongoCollection<Document> collection = mock(MongoCollection.class);
    MongoDbUsersDao usersDao = new MongoDbUsersDao(collection, MAPPER);
    doThrow(MongoTimeoutException.class).when(collection).find(any(Bson.class));
    CompletionException e = assertThrows(CompletionException.class, () -> usersDao.findByEmail("test@test.com").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)

Example 28 with DatabaseException

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

the class MongoDbUsersDaoTest method testUnsuccessfulDeleteRequestRejected.

@Test
void testUnsuccessfulDeleteRequestRejected() {
    MongoCollection<Document> collection = mock(MongoCollection.class);
    FindIterable<Document> findIterable = mock(FindIterable.class);
    MongoCommandException exception = mock(MongoCommandException.class);
    when(exception.getErrorMessage()).thenReturn("Test error");
    when(findIterable.first()).thenReturn(DOCUMENT);
    doReturn(findIterable).when(collection).find(any(Bson.class));
    doThrow(exception).when(collection).deleteOne(any(Bson.class));
    MongoDbUsersDao usersDao = new MongoDbUsersDao(collection, MAPPER);
    CompletionException e = assertThrows(CompletionException.class, () -> usersDao.delete("test@test.com").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")));
    verify(collection, times(1)).deleteOne(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 29 with DatabaseException

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

the class MongoDbUsersDaoTest method testUnsuccessfulFindByEmailEmptyItem.

@Test
void testUnsuccessfulFindByEmailEmptyItem() {
    MongoCollection<Document> collection = mock(MongoCollection.class);
    FindIterable<Document> findIterable = mock(FindIterable.class);
    when(findIterable.first()).thenReturn(null);
    doReturn(findIterable).when(collection).find(any(Bson.class));
    MongoDbUsersDao usersDao = new MongoDbUsersDao(collection, MAPPER);
    CompletionException e = assertThrows(CompletionException.class, () -> usersDao.findByEmail("test@test.com").join());
    assertTrue(e.getCause() instanceof DatabaseException);
    var exp = (DatabaseException) e.getCause();
    assertEquals(DatabaseException.Error.USER_NOT_FOUND, 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