1
0
mirror of synced 2025-12-25 02:09:19 -05:00

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:
Ryan Fu
2022-09-12 16:08:11 -07:00
committed by GitHub
parent dcfcb75d0f
commit 50a8d03c4c
39 changed files with 988 additions and 106 deletions

View File

@@ -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;"));
}
}