use of com.sanctionco.thunder.dao.DatabaseException in project thunder by RohanNagar.
the class MongoDbUsersDaoTest method testUpdatePutRejected.
@Test
void testUpdatePutRejected() {
MongoCollection<Document> collection = mock(MongoCollection.class);
FindIterable<Document> findIterable = mock(FindIterable.class);
var exception = mock(MongoWriteException.class);
var error = mock(WriteError.class);
when(findIterable.first()).thenReturn(DOCUMENT);
when(exception.getError()).thenReturn(error);
when(error.getCategory()).thenReturn(ErrorCategory.UNCATEGORIZED);
doReturn(findIterable).when(collection).find(any(Bson.class));
doThrow(exception).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.REQUEST_REJECTED, 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));
}
use of com.sanctionco.thunder.dao.DatabaseException in project thunder by RohanNagar.
the class MongoDbUsersDaoTest method testExistingUserWithNewEmail.
@Test
void testExistingUserWithNewEmail() {
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));
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.CONFLICT, exp.getError());
verify(collection, times(1)).find(eq(Filters.eq("_id", "test@test.com")));
}
use of com.sanctionco.thunder.dao.DatabaseException in project thunder by RohanNagar.
the class MongoDbUsersDaoTest method testInsertWithDatabaseDown.
@Test
void testInsertWithDatabaseDown() {
MongoCollection<Document> collection = mock(MongoCollection.class);
MongoDbUsersDao usersDao = new MongoDbUsersDao(collection, MAPPER);
doThrow(MongoTimeoutException.class).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")));
}
use of com.sanctionco.thunder.dao.DatabaseException in project thunder by RohanNagar.
the class MongoDbUsersDaoTest method testFindByEmailRequestRejected.
@Test
void testFindByEmailRequestRejected() {
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).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.REQUEST_REJECTED, exp.getError());
verify(collection, times(1)).find(eq(Filters.eq("_id", "test@test.com")));
}
use of com.sanctionco.thunder.dao.DatabaseException in project thunder by RohanNagar.
the class MongoDbUsersDaoTest method testUnsuccessfulDeleteGetFailure.
@Test
void testUnsuccessfulDeleteGetFailure() {
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.delete("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(any(Bson.class));
}
Aggregations