Skip to content

Commit

Permalink
fix: removed uri encoding from source name (id)
Browse files Browse the repository at this point in the history
  • Loading branch information
Dvir Levanon authored and Dvir Levanon committed May 21, 2018
1 parent 3dd78f1 commit 168715e
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 27 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,8 @@ Thumbs.db
*.dotCover
StyleCop.Cache
TestResult.xml
*.lock
*.ide
*.ide-shm
*.ide-wal
*.xml
2 changes: 1 addition & 1 deletion conjur-api/Client.Methods.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public IEnumerable<Variable> ListVariables(string query = null)
/// Note enumerating can incur network requests to fetch more data.
public IEnumerable<User> ListUsers(string query = null)
{
return Conjur.User.List (this, query);
return Conjur.User.List(this, query);
}

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion conjur-api/User.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class User : Resource
/// <param name="client">Conjur client to use to connect.</param>
/// <param name="name">The User (or host) name.</param>
internal User(Client client, string name)
: base(client, "user", Uri.EscapeDataString(name))
: base(client, "user", name)
{
}

Expand Down
49 changes: 24 additions & 25 deletions test/UsersTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,60 +11,59 @@ public class UsersTest : Base

private static string accountTest = "test-account";

public UsersTest ()
public UsersTest()
{
Client.Authenticator = new MockAuthenticator ();
Client.Authenticator = new MockAuthenticator();
}

[Test]
public void TestListUser ()
public void TestListUser()
{
string userListUrl = string.Format("test:///authz/{0}/resources/user", accountTest);
IEnumerator<User> users;

// Verify REST requests and response handling as expected.
// Verify offset, and limit evaluation made as expected
ClearMocker ();
Mocker.Mock (new Uri ($"{userListUrl}?offset=0&limit=1000"), GenerateUsersInfo (0, 1000));
Mocker.Mock (new Uri ($"{userListUrl}?offset=1000&limit=1000"), GenerateUsersInfo (1000, 2000));
Mocker.Mock (new Uri ($"{userListUrl}?offset=2000&limit=1000"), "[]");
ClearMocker();
Mocker.Mock(new Uri($"{userListUrl}?offset=0&limit=1000"), GenerateUsersInfo(0, 1000));
Mocker.Mock(new Uri($"{userListUrl}?offset=1000&limit=1000"), GenerateUsersInfo(1000, 2000));
Mocker.Mock(new Uri($"{userListUrl}?offset=2000&limit=1000"), "[]");
users = Client.ListUsers().GetEnumerator();
VerifyUsersInfo(users, 2000);

// Verify parameters of GetListVariables() passed as expected toward conjur server
ClearMocker ();
ClearMocker();
Client.ActingAs = "user:role";
Mocker.Mock (new Uri ($"{userListUrl}?offset=0&limit=1000&search=user_0&acting_as=user:role"), GenerateUsersInfo (0, 1000));
Mocker.Mock (new Uri ($"{userListUrl}?offset=1000&limit=1000&search=user_0&acting_as=user:role"), GenerateUsersInfo (1000, 1872));
Mocker.Mock (new Uri ($"{userListUrl}?offset=1872&limit=1000&search=user_0&acting_as=user:role"), "[]");
users = (Client.ListUsers("user_0")).GetEnumerator();
Mocker.Mock(new Uri($"{userListUrl}?offset=0&limit=1000&search=user_0&acting_as=user:role"), GenerateUsersInfo(0, 1000));
Mocker.Mock(new Uri($"{userListUrl}?offset=1000&limit=1000&search=user_0&acting_as=user:role"), GenerateUsersInfo(1000, 1872));
Mocker.Mock(new Uri($"{userListUrl}?offset=1872&limit=1000&search=user_0&acting_as=user:role"), "[]");
users =(Client.ListUsers("user_0")).GetEnumerator();
VerifyUsersInfo(users, 1872);

// Check handling invalid json response from conjur server
ClearMocker ();
Mocker.Mock (new Uri ($"{userListUrl}?offset=0&limit=1000&acting_as=user:role"), @"[""id"":""ivnalidjson""]");
ClearMocker();
Mocker.Mock(new Uri($"{userListUrl}?offset=0&limit=1000&acting_as=user:role"), @"[""id"":""ivnalidjson""]");
users = Client.ListUsers().GetEnumerator();
Assert.Throws<SerializationException> (() => users.MoveNext ());
Assert.Throws<SerializationException>(() => users.MoveNext());
}


private void VerifyUsersInfo (IEnumerator<User> users, int expectedNumUsers)
private void VerifyUsersInfo(IEnumerator<User> users, int expectedNumUsers)
{
for (int id = 0; id < expectedNumUsers; ++id) {
Assert.AreEqual (true, users.MoveNext ());
Assert.AreEqual ($"id{id}", users.Current.Id);
for(int id = 0; id < expectedNumUsers; ++id) {
Assert.AreEqual(true, users.MoveNext());
Assert.AreEqual($"abc:user:{id}-admin@AutomationVault{id}", users.Current.Id);
}
Assert.AreEqual (false, users.MoveNext ());
Assert.AreEqual(false, users.MoveNext());
}

private string GenerateUsersInfo (int firstUserId, int lastUserId)
private string GenerateUsersInfo(int firstUserId, int lastUserId)
{
Random rnd = new Random ();
string res = "";

for (int userId = firstUserId; userId < lastUserId; userId++) {;
res += (userId == firstUserId) ? "" : ",";
res += $"{{\"id\":\"id{userId}\"," +
for(int userId = firstUserId; userId < lastUserId; userId++) {
res +=(userId == firstUserId) ? "" : ",";
res += $"{{\"id\":\"abc:user:{userId}-admin@AutomationVault{userId}\"," +
$"\"owner\":\"owner{userId}\"," +
$"\"permissions\":[]," +
$"\"annotations\":[]}}";
Expand Down

0 comments on commit 168715e

Please sign in to comment.