1616 */
1717package com .google .edwmigration .dumper .application .dumper .connector .snowflake ;
1818
19+ import static java .util .Arrays .copyOf ;
20+ import static org .junit .Assert .assertThrows ;
21+ import static org .junit .Assert .assertTrue ;
22+
1923import com .google .common .collect .ImmutableList ;
2024import com .google .edwmigration .dumper .application .dumper .ConnectorArguments ;
2125import com .google .edwmigration .dumper .application .dumper .MetadataDumperUsageException ;
2226import com .google .edwmigration .dumper .application .dumper .connector .AbstractConnectorTest ;
2327import java .io .IOException ;
24- import java .util .ArrayList ;
25- import java .util .List ;
26- import org .apache .commons .lang .ArrayUtils ;
28+ import java .util .stream .IntStream ;
2729import org .junit .Assert ;
2830import org .junit .Test ;
2931import org .junit .runner .RunWith ;
@@ -43,69 +45,64 @@ public class AbstractSnowflakeConnectorTest extends AbstractConnectorTest {
4345
4446 @ Test
4547 public void openConnection_failsForVeryLongInput () throws IOException {
46- List <String > args = new ArrayList <>(ARGS );
47- args .add ("--connector" );
48- args .add (metadataConnector .getName ());
49-
50- args .add ("--database" );
51- args .add (
52- "db12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" );
53-
48+ // 262 characters
49+ String longInput =
50+ "db12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" ;
5451 ConnectorArguments arguments =
55- new ConnectorArguments (args .toArray (ArrayUtils .EMPTY_STRING_ARRAY ));
52+ makeArguments ("--connector" , metadataConnector .getName (), "--database" , longInput );
53+
5654 MetadataDumperUsageException e =
57- Assert .assertThrows (
58- MetadataDumperUsageException .class ,
59- () -> {
60- metadataConnector .open (arguments );
61- });
62- Assert .assertTrue (e .getMessage ().contains ("longer than the maximum allowed number" ));
55+ assertThrows (MetadataDumperUsageException .class , () -> metadataConnector .open (arguments ));
56+
57+ assertTrue (e .getMessage (), e .getMessage ().contains ("longer than the maximum allowed number" ));
6358 }
6459
6560 @ Test
6661 public void openConnection_failsForMalformedInput () throws IOException {
67- List <String > args = new ArrayList <>(ARGS );
68- args .add ("--connector" );
69- args .add (metadataConnector .getName ());
70-
71- args .add ("--database" );
72- args .add ("testdb\" ;DROP DATABASE testdb" );
73-
7462 ConnectorArguments arguments =
75- new ConnectorArguments (args .toArray (ArrayUtils .EMPTY_STRING_ARRAY ));
63+ makeArguments (
64+ "--connector" ,
65+ metadataConnector .getName (),
66+ "--database" ,
67+ "testdb\" ;DROP DATABASE testdb" );
68+
7669 MetadataDumperUsageException e =
77- Assert .assertThrows (
78- MetadataDumperUsageException .class ,
79- () -> {
80- metadataConnector .open (arguments );
81- });
82- Assert .assertTrue (
70+ assertThrows (MetadataDumperUsageException .class , () -> metadataConnector .open (arguments ));
71+
72+ assertTrue (
73+ e .getMessage (),
8374 e .getMessage ().contains ("Database name has incorrectly placed double quote(s)." ));
8475 }
8576
8677 @ Test
8778 public void openConnection_failsForMixedPrivateKeyAndPassword () throws IOException {
88- List <String > args = new ArrayList <>(ARGS );
89- args .add ("--connector" );
90- args .add (metadataConnector .getName ());
91-
92- args .add ("--private-key-file" );
93- args .add ("/path/to/file.r8" );
94-
9579 ConnectorArguments arguments =
96- new ConnectorArguments (args .toArray (ArrayUtils .EMPTY_STRING_ARRAY ));
80+ makeArguments (
81+ "--connector" , metadataConnector .getName (), "--private-key-file" , "/path/to/file.r8" );
82+
9783 MetadataDumperUsageException e =
98- Assert .assertThrows (
99- MetadataDumperUsageException .class ,
100- () -> {
101- metadataConnector .open (arguments );
102- });
103- Assert .assertTrue (
84+ assertThrows (MetadataDumperUsageException .class , () -> metadataConnector .open (arguments ));
85+
86+ assertTrue (
87+ e .getMessage (),
10488 e .getMessage ()
10589 .contains (
10690 "Private key authentication method can't be used together with user password" ));
10791 }
10892
93+ @ Test
94+ public void open_assessmentEnabledWithDatabaseFilter_throwsUsageException () throws IOException {
95+ ConnectorArguments arguments =
96+ makeArguments ("--connector" , "snowflake" , "--database" , "SNOWFLAKE" , "--assessment" );
97+
98+ MetadataDumperUsageException e =
99+ assertThrows (MetadataDumperUsageException .class , () -> metadataConnector .open (arguments ));
100+
101+ assertTrue (
102+ e .getMessage (),
103+ e .getMessage ().contains ("Trying to filter by database with the --assessment flag." ));
104+ }
105+
109106 @ Test
110107 public void checkJnaInClasspath_success () {
111108 try {
@@ -116,4 +113,15 @@ public void checkJnaInClasspath_success() {
116113 "net.java.dev.jna was not found in the classpath it is required for the Snowflake MFA caching." );
117114 }
118115 }
116+
117+ private static ConnectorArguments makeArguments (String ... extraArguments ) {
118+ try {
119+ String [] arguments = copyOf (extraArguments , extraArguments .length + ARGS .size ());
120+ IntStream .range (0 , ARGS .size ())
121+ .forEach (el -> arguments [el + extraArguments .length ] = ARGS .get (el ));
122+ return new ConnectorArguments (arguments );
123+ } catch (IOException e ) {
124+ throw new RuntimeException (e );
125+ }
126+ }
119127}
0 commit comments