Skip to content

Commit 586826c

Browse files
committed
Tests - Execute Command DCL execution verifiction (Oracle)
1 parent d4a7aa9 commit 586826c

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

QueryDB.Core.Tests/OracleTests.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,57 @@ public void Test_Oracle_ExecuteCommand_DML_Unsupported_SELECT_Queries()
406406
}
407407
}
408408

409+
[TestMethod]
410+
[TestCategory(DB_TESTS), TestCategory(ORACLE_TESTS)]
411+
public void Test_Oracle_ExecuteCommand_DCL_Queries()
412+
{
413+
var user = "TEST_USER";
414+
var password = "Test@1234";
415+
var table = "AGENTS";
416+
var commands = "SELECT, UPDATE";
417+
var checkCommand = "SELECT";
418+
419+
var createUser = string.Format(Queries.OracleQueries.TestDB.DCL.CreateUserSql_User_Password, user, password);
420+
var grantConnect = string.Format(Queries.OracleQueries.TestDB.DCL.GrantConnectSql_User, user);
421+
var grantSql = string.Format(Queries.OracleQueries.TestDB.DCL.GrantSql_Command_Table_User, commands, table, user);
422+
var revokeSql = string.Format(Queries.OracleQueries.TestDB.DCL.RevokeSql_Command_Table_User, commands, table, user);
423+
var verifyPermissions = string.Format(Queries.OracleQueries.TestDB.DCL.VerifyPermission_User, user);
424+
var removeUser = string.Format(Queries.OracleQueries.TestDB.DCL.RemoveUserSql_User, user);
425+
426+
var dbContext = new DBContext(DB.Oracle, OracleConnectionString);
427+
428+
// Create User
429+
var result = dbContext.ExecuteCommand(createUser);
430+
Assert.AreEqual(0, result);
431+
432+
// Grant CONNECT to User
433+
result = dbContext.ExecuteCommand(grantConnect);
434+
Assert.AreEqual(0, result);
435+
436+
// Existing Permissions
437+
var data = dbContext.FetchData(verifyPermissions);
438+
Assert.AreEqual(1, data.Count);
439+
Assert.IsFalse(data.Any(data => data.ReferenceData.Values.Any(value => value.Contains(checkCommand))));
440+
441+
// Grant
442+
result = dbContext.ExecuteCommand(grantSql);
443+
Assert.AreEqual(0, result);
444+
data = dbContext.FetchData(verifyPermissions);
445+
Assert.AreEqual(2, data.Count);
446+
Assert.IsTrue(data.Any(data => data.ReferenceData.Values.Any(value => value.Contains(checkCommand))));
447+
448+
// Revoke
449+
result = dbContext.ExecuteCommand(revokeSql);
450+
Assert.AreEqual(0, result);
451+
data = dbContext.FetchData(verifyPermissions);
452+
Assert.AreEqual(1, data.Count);
453+
Assert.IsFalse(data.Any(data => data.ReferenceData.Values.Any(value => value.Contains(checkCommand))));
454+
455+
// Remove User
456+
result = dbContext.ExecuteCommand(removeUser);
457+
Assert.AreEqual(0, result);
458+
}
459+
409460
#endregion
410461

411462
#endregion

QueryDB.Core.Tests/Queries.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,15 @@ internal static class DML
149149
internal static string VerifyDMLExecution = @"SELECT * FROM Agents WHERE Agent_Code = 'A020'";
150150
internal static string SelectSql = @"SELECT * FROM Agents";
151151
}
152+
internal static class DCL
153+
{
154+
internal static string CreateUserSql_User_Password = @"CREATE USER {0} IDENTIFIED BY {1}";
155+
internal static string GrantConnectSql_User = @"GRANT CONNECT TO {0}";
156+
internal static string GrantSql_Command_Table_User = @"GRANT {0} ON {1} TO {2}";
157+
internal static string RevokeSql_Command_Table_User = @"REVOKE {0} ON {1} FROM {2}";
158+
internal static string VerifyPermission_User = @"SELECT PRIVILEGE FROM USER_TAB_PRIVS WHERE GRANTEE = '{0}'";
159+
internal static string RemoveUserSql_User = @"DROP USER {0} CASCADE";
160+
}
152161
}
153162
}
154163

0 commit comments

Comments
 (0)