Cleans and Rebase Error Message Factory PR (#16202)
* Cleaned error messages factory PR * Bumped MySQL and Postgres version * Fixed messages and typos in test * Fixes the changelog conflict with per-stream state * Added note for flaky test * Bumps mysql version to match changelog * Added exception objects to all LOGGER.error for more visibility * auto-bump connector version [ci skip] Co-authored-by: Octavia Squidington III <octavia-squidington-iii@users.noreply.github.com>
This commit is contained in:
@@ -4,6 +4,9 @@
|
||||
|
||||
package io.airbyte.integrations.source.mssql;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
@@ -16,15 +19,20 @@ import io.airbyte.db.jdbc.JdbcDatabase;
|
||||
import io.airbyte.db.jdbc.JdbcUtils;
|
||||
import io.airbyte.integrations.source.jdbc.AbstractJdbcSource;
|
||||
import io.airbyte.integrations.source.jdbc.test.JdbcSourceAcceptanceTest;
|
||||
import io.airbyte.protocol.models.AirbyteConnectionStatus;
|
||||
import java.sql.JDBCType;
|
||||
import javax.sql.DataSource;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.testcontainers.containers.MSSQLServerContainer;
|
||||
|
||||
public class MssqlJdbcSourceAcceptanceTest extends JdbcSourceAcceptanceTest {
|
||||
|
||||
protected static final String USERNAME_WITHOUT_PERMISSION = "new_user";
|
||||
protected static final String PASSWORD_WITHOUT_PERMISSION = "password_3435!";
|
||||
private static MSSQLServerContainer<?> dbContainer;
|
||||
private JsonNode config;
|
||||
|
||||
@@ -92,4 +100,55 @@ public class MssqlJdbcSourceAcceptanceTest extends JdbcSourceAcceptanceTest {
|
||||
return MssqlSource.DRIVER_CLASS;
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCheckIncorrectPasswordFailure() throws Exception {
|
||||
((ObjectNode) config).put(JdbcUtils.PASSWORD_KEY, "fake");
|
||||
final AirbyteConnectionStatus status = source.check(config);
|
||||
Assertions.assertEquals(AirbyteConnectionStatus.Status.FAILED, status.getStatus());
|
||||
assertTrue(status.getMessage().contains("State code: S0001; Error code: 18456;"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCheckIncorrectUsernameFailure() throws Exception {
|
||||
((ObjectNode) config).put(JdbcUtils.USERNAME_KEY, "fake");
|
||||
final AirbyteConnectionStatus status = source.check(config);
|
||||
Assertions.assertEquals(AirbyteConnectionStatus.Status.FAILED, status.getStatus());
|
||||
assertTrue(status.getMessage().contains("State code: S0001; Error code: 18456;"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCheckIncorrectHostFailure() throws Exception {
|
||||
((ObjectNode) config).put(JdbcUtils.HOST_KEY, "localhost2");
|
||||
final AirbyteConnectionStatus status = source.check(config);
|
||||
Assertions.assertEquals(AirbyteConnectionStatus.Status.FAILED, status.getStatus());
|
||||
assertTrue(status.getMessage().contains("State code: 08S01;"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCheckIncorrectPortFailure() throws Exception {
|
||||
((ObjectNode) config).put(JdbcUtils.PORT_KEY, "0000");
|
||||
final AirbyteConnectionStatus status = source.check(config);
|
||||
Assertions.assertEquals(AirbyteConnectionStatus.Status.FAILED, status.getStatus());
|
||||
assertTrue(status.getMessage().contains("State code: 08S01;"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCheckIncorrectDataBaseFailure() throws Exception {
|
||||
((ObjectNode) config).put(JdbcUtils.DATABASE_KEY, "wrongdatabase");
|
||||
final AirbyteConnectionStatus status = source.check(config);
|
||||
Assertions.assertEquals(AirbyteConnectionStatus.Status.FAILED, status.getStatus());
|
||||
assertTrue(status.getMessage().contains("State code: S0001; Error code: 4060;"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUserHasNoPermissionToDataBase() throws Exception {
|
||||
database.execute(ctx -> ctx.createStatement()
|
||||
.execute(String.format("CREATE LOGIN %s WITH PASSWORD = '%s'; ", USERNAME_WITHOUT_PERMISSION, PASSWORD_WITHOUT_PERMISSION)));
|
||||
((ObjectNode) config).put(JdbcUtils.USERNAME_KEY, USERNAME_WITHOUT_PERMISSION);
|
||||
((ObjectNode) config).put(JdbcUtils.PASSWORD_KEY, PASSWORD_WITHOUT_PERMISSION);
|
||||
final AirbyteConnectionStatus status = source.check(config);
|
||||
assertEquals(AirbyteConnectionStatus.Status.FAILED, status.getStatus());
|
||||
assertTrue(status.getMessage().contains("State code: S0001; Error code: 4060;"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user