Example #1
0
        public void NewCommandValidInput()
        {
            // Build test variables for later
            var Con     = new SqlConnection(ConStr);
            var Con2    = new SqlConnection(ConStr2);
            var Params  = new SqlCommand().Parameters;
            var Params2 = new List <SqlParameter>();

            for (int i = 0; i < 3; i++)
            {
                Params.AddWithValue('@' + i.ToString(), i);
                Params2.Add(new SqlParameter('@' + i.ToString(), i + 1));
            }
            // Create fake credentials to test with
            var Cipher = new System.Security.SecureString();

            foreach (char c in Pwd)
            {
                Cipher.AppendChar(c);
            }
            Cipher.MakeReadOnly();
            var Cred = new SqlCredential(UsrNm, Cipher);

            // Test1 - CommandText
            var Cmd = SqlCmd.New(Command);

            Assert.AreEqual(Command, Cmd.CommandText);
            Assert.IsNull(Cmd.Connection);
            Cmd = null;

            // Test2 - CommandText, CommandType
            Cmd = SqlCmd.New(Command, CommandType.Text);
            Assert.AreEqual(Command, Cmd.CommandText);
            Assert.AreEqual(CommandType.Text, Cmd.CommandType);
            Assert.IsNull(Cmd.Connection);
            Cmd = null;

            // Test3 - CommandText, Timeout
            Cmd = SqlCmd.New(Command, 3);
            Assert.AreEqual(Command, Cmd.CommandText);
            Assert.AreEqual(3, Cmd.CommandTimeout);
            Assert.IsNull(Cmd.Connection);
            Cmd = null;

            // Test4 - CommandText, SqlConnection
            Cmd = SqlCmd.New(Command, Con);
            Assert.AreEqual(Command, Cmd.CommandText);
            Assert.IsNotNull(Cmd.Connection);
            Assert.AreEqual(Con, Cmd.Connection);
            Cmd = null;

            // Test5 - CommandText, SqlParameterCollection
            Cmd = SqlCmd.New(Command3, Params);
            Assert.AreEqual(Command3, Cmd.CommandText);
            Assert.IsNotNull(Cmd.Parameters);
            for (int i = 0, j = Cmd.Parameters.Count; i < j; i++)
            {
                Assert.AreEqual(Params[i].ParameterName, Cmd.Parameters[i].ParameterName);
                Assert.AreEqual(Params[i].Value, Cmd.Parameters[i].Value);
            }
            Cmd = null;

            // Test6 - CommandText, ConnectionString
            Cmd = SqlCmd.New(Command, ConStr);
            Assert.AreEqual(Command, Cmd.CommandText);
            Assert.IsNotNull(Cmd.Connection);
            Assert.AreEqual(ConStr, Cmd.Connection.ConnectionString);
            Cmd = null;

            // Test7 - CommandText, List<SqlParameter>
            Cmd = SqlCmd.New(Command3, Params2);
            Assert.AreEqual(Command3, Cmd.CommandText);
            for (int i = 0, j = Cmd.Parameters.Count; i < j; i++)
            {
                Assert.AreEqual(Params2[i].ParameterName, Cmd.Parameters[i].ParameterName);
                Assert.AreEqual(Params2[i].Value, Cmd.Parameters[i].Value);
            }

            // Test17 - CommandText, ConnectionString, SqlCredential
            Cmd = SqlCmd.New(Command2, ConStr2, Cred);
            Assert.AreEqual(Command2, Cmd.CommandText);
            Assert.IsNotNull(Cmd.Connection);
            Assert.IsNotNull(Cmd.Connection.Credential);
            Assert.AreEqual(ConStr2, Cmd.Connection.ConnectionString);
            Assert.AreEqual(Cred, Cmd.Connection.Credential);
            Cmd = null;

            // Test20 - CommandText, CommandType, Timeout, SqlParameterCollection
            Cmd = SqlCmd.New(Command3, CommandType.StoredProcedure, 15, Params);
            Assert.AreEqual(Command3, Cmd.CommandText);
            Assert.AreEqual(CommandType.StoredProcedure, Cmd.CommandType);
            Assert.AreEqual(15, Cmd.CommandTimeout);
            for (int i = 0, j = Cmd.Parameters.Count; i < j; i++)
            {
                Assert.AreEqual(Params[i].ParameterName, Cmd.Parameters[i].ParameterName);
                Assert.AreEqual(Params[i].Value, Cmd.Parameters[i].Value);
            }
            Cmd = null;

            // Test32 - CommandText, ConnectionString, Username, Password
            Cmd = SqlCmd.New(Command, ConStr2, UsrNm, Pwd);
            Assert.AreEqual(Command, Cmd.CommandText);
            Assert.IsNotNull(Cmd.Connection);
            Assert.IsNotNull(Cmd.Connection.Credential);
            Assert.AreEqual(ConStr2, Cmd.Connection.ConnectionString);
            Assert.AreEqual(UsrNm, Cmd.Connection.Credential.UserId);
            Assert.AreEqual(8, Cmd.Connection.Credential.Password.Length);
            Cmd = null;

            // Test50 - CommandText, ConnectionString, SqlCredentail, CommandType, Timeout, List<SqlParameter>
            Cmd = SqlCmd.New(Command, ConStr2, Cred, CommandType.Text, 30, Params2);
            Assert.AreEqual(Command, Cmd.CommandText);
            Assert.AreEqual(CommandType.Text, Cmd.CommandType);
            Assert.IsNotNull(Cmd.Connection);
            Assert.IsNotNull(Cmd.Connection.Credential);
            Assert.AreEqual(ConStr2, Cmd.Connection.ConnectionString);
            Assert.AreEqual(Cred, Cmd.Connection.Credential);
            Assert.AreEqual(30, Cmd.CommandTimeout);
            for (int i = 0, j = Cmd.Parameters.Count; i < j; i++)
            {
                Assert.AreEqual(Params2[i].ParameterName, Cmd.Parameters[i].ParameterName);
                Assert.AreEqual(Params2[i].Value, Cmd.Parameters[i].Value);
            }
            Cmd = null;

            // Test57 - CommandText, ConnectionString, Username, Password, CommandType, Timeout, List<SqlParameter>
            Cmd = SqlCmd.New(Command, ConStr2, UsrNm, Pwd, CommandType.Text, 120, Params2);
            Assert.AreEqual(Command, Cmd.CommandText);
            Assert.AreEqual(CommandType.Text, Cmd.CommandType);
            Assert.IsNotNull(Cmd.Connection);
            Assert.IsNotNull(Cmd.Connection.Credential);
            Assert.AreEqual(ConStr2, Cmd.Connection.ConnectionString);
            Assert.AreEqual(UsrNm, Cmd.Connection.Credential.UserId);
            Assert.AreEqual(8, Cmd.Connection.Credential.Password.Length);
            Assert.AreEqual(120, Cmd.CommandTimeout);
            for (int i = 0, j = Cmd.Parameters.Count; i < j; i++)
            {
                Assert.AreEqual(Params2[i].ParameterName, Cmd.Parameters[i].ParameterName);
                Assert.AreEqual(Params2[i].Value, Cmd.Parameters[i].Value);
            }
            Cmd = null;
        }
Example #2
0
        public void NewCommandInvalidInput()
        {
            // Build test variables for later
            var Con     = new SqlConnection(ConStr);
            var Con2    = new SqlConnection(ConStr2);
            var Params  = new SqlCommand().Parameters;
            var Params2 = new List <SqlParameter>();

            for (int i = 0; i < 3; i++)
            {
                Params.AddWithValue('@' + i.ToString(), i);
                Params2.Add(new SqlParameter('@' + i.ToString(), i + 1));
            }
            // Create fake credentials to test with
            var Cipher = new System.Security.SecureString();

            foreach (char c in Pwd)
            {
                Cipher.AppendChar(c);
            }

            // Test the attempt to create without ReadOnly password
            try
            {
                SqlCmd.New(Command2, ConStr2, UsrNm, Cipher);
            }
            catch (ArgumentException ae)
            {
                Assert.AreEqual("password must be marked as read only.", ae.Message);
            }
            catch { Assert.Fail(); }

            // Make ReadOnly and continue testing
            Cipher.MakeReadOnly();
            var Cred = new SqlCredential(UsrNm, Cipher);

            // Test the attempt to create with IntegratedSecurity = True and Credentials
            try
            {
                SqlCmd.New(Command2, ConStr, Cred);
            }
            catch (ArgumentException ae)
            {
                Assert.AreEqual("Cannot use Credential with Integrated Security connection string keyword.", ae.Message);
            }
            catch { Assert.Fail(); }

            // Test the attempt to create with null Credentials
            try
            {
                SqlCmd.New(Command2, ConStr2, null, "");
            }
            catch (ArgumentException ae)
            {
                Assert.AreEqual("Value cannot be null.\r\nParameter name: userId", ae.Message);
            }
            catch { Assert.Fail(); }
            try
            {
                SqlCmd.New(Command2, ConStr2, null, new System.Security.SecureString());
            }
            catch (ArgumentException ae)
            {
                Assert.AreEqual("Value cannot be null.\r\nParameter name: userId", ae.Message);
            }
            catch { Assert.Fail(); }
        }