@Test
public void migratePlaceholderTopicActionSubject() {

    final Connection migratedConnection =
            ConnectionMigrationUtil.connectionFromJsonWithMigration(KNOWN_CONNECTION_JSON);
    assertThat(migratedConnection.getSources().get(1).getHeaderMapping()).isPresent();
    final HeaderMapping sourceHeaderMapping = migratedConnection.getSources().get(1).getHeaderMapping().get();
    assertThat(sourceHeaderMapping.getMapping().get("source-action"))
            .isEqualTo("source/{{ topic:action }}");
    assertThat(sourceHeaderMapping.getMapping().get("source-subject"))
            .isEqualTo("source/{{topic:action-subject }}");
    assertThat(sourceHeaderMapping.getMapping().get("source-subject-next-gen"))
            .isEqualTo("source/{{    topic:action-subject }}");
    assertThat(sourceHeaderMapping.getMapping().get("source-some-header"))
            .isEqualTo("source/{{ topic:full | fn:substring-before('/') }}");
    assertThat(migratedConnection.getTargets().get(1).getHeaderMapping()).isPresent();
    final HeaderMapping targetHeaderMapping = migratedConnection.getTargets().get(1).getHeaderMapping().get();
    assertThat(targetHeaderMapping.getMapping().get("target-action"))
            .isEqualTo("target/{{ topic:action }}");
    assertThat(targetHeaderMapping.getMapping().get("target-subject"))
            .isEqualTo("target/{{topic:action-subject }}");
    assertThat(targetHeaderMapping.getMapping().get("target-subject-next-gen"))
            .isEqualTo("target/{{    topic:action-subject }}");
    assertThat(targetHeaderMapping.getMapping().get("target-some-header"))
            .isEqualTo("target/{{ topic:full | fn:substring-before('/') }}");
    assertThat(migratedConnection.getTargets().get(2).getAddress())
            .isEqualTo("amqp/target3/{{topic:action-subject}}");
}