|
19 | 19 | import static io.airbyte.integrations.source.mongodb.cdc.MongoDbDebeziumPropertiesManager.MONGODB_CONNECTION_MODE_VALUE;
|
20 | 20 | import static io.airbyte.integrations.source.mongodb.cdc.MongoDbDebeziumPropertiesManager.MONGODB_CONNECTION_STRING_KEY;
|
21 | 21 | import static io.airbyte.integrations.source.mongodb.cdc.MongoDbDebeziumPropertiesManager.MONGODB_PASSWORD_KEY;
|
| 22 | +import static io.airbyte.integrations.source.mongodb.cdc.MongoDbDebeziumPropertiesManager.MONGODB_POST_IMAGE_KEY; |
| 23 | +import static io.airbyte.integrations.source.mongodb.cdc.MongoDbDebeziumPropertiesManager.MONGODB_POST_IMAGE_VALUE; |
22 | 24 | import static io.airbyte.integrations.source.mongodb.cdc.MongoDbDebeziumPropertiesManager.MONGODB_SSL_ENABLED_KEY;
|
23 | 25 | import static io.airbyte.integrations.source.mongodb.cdc.MongoDbDebeziumPropertiesManager.MONGODB_SSL_ENABLED_VALUE;
|
24 | 26 | import static io.airbyte.integrations.source.mongodb.cdc.MongoDbDebeziumPropertiesManager.MONGODB_USER_KEY;
|
|
34 | 36 | import io.airbyte.cdk.integrations.debezium.internals.AirbyteFileOffsetBackingStore;
|
35 | 37 | import io.airbyte.cdk.integrations.debezium.internals.AirbyteSchemaHistoryStorage;
|
36 | 38 | import io.airbyte.commons.json.Jsons;
|
| 39 | +import io.airbyte.integrations.source.mongodb.MongoConstants; |
37 | 40 | import io.airbyte.protocol.models.v0.AirbyteStream;
|
38 | 41 | import io.airbyte.protocol.models.v0.ConfiguredAirbyteCatalog;
|
39 | 42 | import io.airbyte.protocol.models.v0.ConfiguredAirbyteStream;
|
@@ -80,6 +83,65 @@ void testDebeziumProperties() {
|
80 | 83 | assertEquals(DATABASE_NAME, debeziumProperties.get(DATABASE_INCLUDE_LIST_KEY));
|
81 | 84 | }
|
82 | 85 |
|
| 86 | + @Test |
| 87 | + void testDebeziumProperties_captureMode_lookup() { |
| 88 | + final List<ConfiguredAirbyteStream> streams = createStreams(4); |
| 89 | + final AirbyteFileOffsetBackingStore offsetManager = mock(AirbyteFileOffsetBackingStore.class); |
| 90 | + final ConfiguredAirbyteCatalog catalog = mock(ConfiguredAirbyteCatalog.class); |
| 91 | + JsonNode config = createConfiguration(Optional.of("username"), Optional.of("password"), Optional.of("admin")); |
| 92 | + ((ObjectNode) config).put(MongoConstants.UPDATE_CAPTURE_MODE, MongoConstants.CAPTURE_MODE_LOOKUP_OPTION); |
| 93 | + |
| 94 | + when(catalog.getStreams()).thenReturn(streams); |
| 95 | + |
| 96 | + final Properties cdcProperties = new Properties(); |
| 97 | + cdcProperties.put("test", "value"); |
| 98 | + |
| 99 | + final var debeziumPropertiesManager = new MongoDbDebeziumPropertiesManager(cdcProperties, config, catalog); |
| 100 | + |
| 101 | + final Properties debeziumProperties = debeziumPropertiesManager.getDebeziumProperties(offsetManager); |
| 102 | + assertEquals(21 + cdcProperties.size(), debeziumProperties.size()); |
| 103 | + assertEquals(MongoDbDebeziumPropertiesManager.normalizeName(DATABASE_NAME), debeziumProperties.get(NAME_KEY)); |
| 104 | + assertEquals(MongoDbDebeziumPropertiesManager.normalizeName(DATABASE_NAME), debeziumProperties.get(TOPIC_PREFIX_KEY)); |
| 105 | + assertEquals(EXPECTED_CONNECTION_STRING, debeziumProperties.get(MONGODB_CONNECTION_STRING_KEY)); |
| 106 | + assertEquals(MONGODB_CONNECTION_MODE_VALUE, debeziumProperties.get(MONGODB_CONNECTION_MODE_KEY)); |
| 107 | + assertEquals(config.get(USERNAME_CONFIGURATION_KEY).asText(), debeziumProperties.get(MONGODB_USER_KEY)); |
| 108 | + assertEquals(config.get(PASSWORD_CONFIGURATION_KEY).asText(), debeziumProperties.get(MONGODB_PASSWORD_KEY)); |
| 109 | + assertEquals(config.get(AUTH_SOURCE_CONFIGURATION_KEY).asText(), debeziumProperties.get(MONGODB_AUTHSOURCE_KEY)); |
| 110 | + assertEquals(MONGODB_SSL_ENABLED_VALUE, debeziumProperties.get(MONGODB_SSL_ENABLED_KEY)); |
| 111 | + assertEquals(debeziumPropertiesManager.createCollectionIncludeString(streams), debeziumProperties.get(COLLECTION_INCLUDE_LIST_KEY)); |
| 112 | + assertEquals(DATABASE_NAME, debeziumProperties.get(DATABASE_INCLUDE_LIST_KEY)); |
| 113 | + } |
| 114 | + |
| 115 | + @Test |
| 116 | + void testDebeziumProperties_captureMode_postImage() { |
| 117 | + final List<ConfiguredAirbyteStream> streams = createStreams(4); |
| 118 | + final AirbyteFileOffsetBackingStore offsetManager = mock(AirbyteFileOffsetBackingStore.class); |
| 119 | + final ConfiguredAirbyteCatalog catalog = mock(ConfiguredAirbyteCatalog.class); |
| 120 | + JsonNode config = createConfiguration(Optional.of("username"), Optional.of("password"), Optional.of("admin")); |
| 121 | + ((ObjectNode) config).put(MongoConstants.UPDATE_CAPTURE_MODE, MongoConstants.CAPTURE_MODE_POST_IMAGE_OPTION); |
| 122 | + |
| 123 | + when(catalog.getStreams()).thenReturn(streams); |
| 124 | + |
| 125 | + final Properties cdcProperties = new Properties(); |
| 126 | + cdcProperties.put("test", "value"); |
| 127 | + |
| 128 | + final var debeziumPropertiesManager = new MongoDbDebeziumPropertiesManager(cdcProperties, config, catalog); |
| 129 | + |
| 130 | + final Properties debeziumProperties = debeziumPropertiesManager.getDebeziumProperties(offsetManager); |
| 131 | + assertEquals(22 + cdcProperties.size(), debeziumProperties.size()); |
| 132 | + assertEquals(MongoDbDebeziumPropertiesManager.normalizeName(DATABASE_NAME), debeziumProperties.get(NAME_KEY)); |
| 133 | + assertEquals(MongoDbDebeziumPropertiesManager.normalizeName(DATABASE_NAME), debeziumProperties.get(TOPIC_PREFIX_KEY)); |
| 134 | + assertEquals(EXPECTED_CONNECTION_STRING, debeziumProperties.get(MONGODB_CONNECTION_STRING_KEY)); |
| 135 | + assertEquals(MONGODB_CONNECTION_MODE_VALUE, debeziumProperties.get(MONGODB_CONNECTION_MODE_KEY)); |
| 136 | + assertEquals(config.get(USERNAME_CONFIGURATION_KEY).asText(), debeziumProperties.get(MONGODB_USER_KEY)); |
| 137 | + assertEquals(config.get(PASSWORD_CONFIGURATION_KEY).asText(), debeziumProperties.get(MONGODB_PASSWORD_KEY)); |
| 138 | + assertEquals(config.get(AUTH_SOURCE_CONFIGURATION_KEY).asText(), debeziumProperties.get(MONGODB_AUTHSOURCE_KEY)); |
| 139 | + assertEquals(MONGODB_SSL_ENABLED_VALUE, debeziumProperties.get(MONGODB_SSL_ENABLED_KEY)); |
| 140 | + assertEquals(debeziumPropertiesManager.createCollectionIncludeString(streams), debeziumProperties.get(COLLECTION_INCLUDE_LIST_KEY)); |
| 141 | + assertEquals(DATABASE_NAME, debeziumProperties.get(DATABASE_INCLUDE_LIST_KEY)); |
| 142 | + assertEquals(MONGODB_POST_IMAGE_VALUE, debeziumProperties.get(MONGODB_POST_IMAGE_KEY)); |
| 143 | + } |
| 144 | + |
83 | 145 | @Test
|
84 | 146 | void testDebeziumPropertiesConnectionStringCredentialsPlaceholder() {
|
85 | 147 | final List<ConfiguredAirbyteStream> streams = createStreams(4);
|
|
0 commit comments