private void VerifyEqualMongoRoleDefinitions(MongoRoleDefinitionGetResults expectedValue, MongoRoleDefinitionGetResults actualValue) { Assert.Equal(expectedValue.Name, actualValue.Name); Assert.Equal(expectedValue.Id, actualValue.Id); Assert.Equal(expectedValue.Type, actualValue.Type); Assert.Equal(expectedValue.RoleName, actualValue.RoleName); Assert.Equal(expectedValue.Privileges.Count, actualValue.Privileges.Count); for (int i = 0; i < expectedValue.Privileges.Count; i++) { Assert.Equal(expectedValue.Privileges[i].Actions.Count, actualValue.Privileges[i].Actions.Count); } }
private void VerifyCreateUpdateRoleDefinition(MongoRoleDefinitionCreateUpdateParameters mongoRoleDefinitionCreateUpdateParameters, MongoRoleDefinitionGetResults mogoRoleDefinitionGetResults) { Assert.Equal(mongoRoleDefinitionCreateUpdateParameters.RoleName, mogoRoleDefinitionGetResults.RoleName); Assert.Equal(mongoRoleDefinitionCreateUpdateParameters.Privileges.Count, mogoRoleDefinitionGetResults.Privileges.Count); for (int i = 0; i < mongoRoleDefinitionCreateUpdateParameters.Privileges.Count; i++) { Assert.Equal(mogoRoleDefinitionGetResults.Privileges[i].Actions.Count, mogoRoleDefinitionGetResults.Privileges[i].Actions.Count); } }
public void MongoUsersAndRolesTests() { using (var context = MockContext.Start(this.GetType())) { fixture.Location = "west us 2"; fixture.Init(context); string databaseAccountName = this.fixture.GetDatabaseAccountName(TestFixture.AccountType.Mongo36); var mongoClient = this.fixture.CosmosDBManagementClient.MongoDBResources; string databaseName = TestUtilities.GenerateName(prefix: "mongoDb"); string databaseName2 = TestUtilities.GenerateName(prefix: "mongoDb"); string collectionName = TestUtilities.GenerateName(prefix: "mongoCollection"); string roleName1 = "role1"; string roleName2 = "role2"; string roleId1 = databaseName + "." + roleName1; string roleId2 = databaseName + "." + roleName2; string userName1 = "testuser1"; Dictionary <string, string> additionalProperties = new Dictionary <string, string> { { "foo", "bar" } }; Dictionary <string, string> tags = new Dictionary <string, string> { { "key3", "value3" }, { "key4", "value4" } }; MongoDBDatabaseCreateUpdateParameters mongoDBDatabaseCreateUpdateParameters = new MongoDBDatabaseCreateUpdateParameters { Resource = new MongoDBDatabaseResource { Id = databaseName }, Options = new CreateUpdateOptions(), Location = "west us 2" }; MongoDBDatabaseGetResults mongoDBDatabaseGetResults = mongoClient.CreateUpdateMongoDBDatabaseWithHttpMessagesAsync(this.fixture.ResourceGroupName, databaseAccountName, databaseName, mongoDBDatabaseCreateUpdateParameters).GetAwaiter().GetResult().Body; Assert.Equal(databaseName, mongoDBDatabaseGetResults.Name); Assert.NotNull(mongoDBDatabaseGetResults); MongoRoleDefinitionCreateUpdateParameters mongoRoleDefinitionCreateUpdateParameters1 = new MongoRoleDefinitionCreateUpdateParameters { RoleName = roleName1, DatabaseName = databaseName, Type = MongoRoleDefinitionType.CustomRole, Privileges = new List <Privilege> { new Privilege { Resource = new PrivilegeResource { Db = databaseName, Collection = "test" }, Actions = new List <string> { "insert" } } } }; // Create Role Definition MongoRoleDefinitionGetResults mongoRoleDefinitionGetResults = mongoClient.CreateUpdateMongoRoleDefinitionWithHttpMessagesAsync(roleId1, this.fixture.ResourceGroupName, databaseAccountName, mongoRoleDefinitionCreateUpdateParameters1).GetAwaiter().GetResult().Body; Assert.NotNull(mongoRoleDefinitionGetResults); Assert.Equal(roleName1, mongoRoleDefinitionGetResults.Name); VerifyCreateUpdateRoleDefinition(mongoRoleDefinitionCreateUpdateParameters1, mongoRoleDefinitionGetResults); // Get Role Definition MongoRoleDefinitionGetResults mongoRoleDefinitionGetResults2 = mongoClient.GetMongoRoleDefinitionWithHttpMessagesAsync(roleId1, this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoRoleDefinitionGetResults2); Assert.Equal(roleName1, mongoRoleDefinitionGetResults2.Name); VerifyEqualMongoRoleDefinitions(mongoRoleDefinitionGetResults, mongoRoleDefinitionGetResults2); // Create role definition using inherited role MongoRoleDefinitionCreateUpdateParameters mongoRoleDefinitionCreateUpdateParameters2 = new MongoRoleDefinitionCreateUpdateParameters { RoleName = roleName2, DatabaseName = databaseName, Type = MongoRoleDefinitionType.CustomRole, Privileges = new List <Privilege> { new Privilege { Resource = new PrivilegeResource { Db = databaseName, Collection = "test" }, Actions = new List <string> { "find" } } }, Roles = new List <Role> { new Role { Db = databaseName, RoleProperty = roleName1 } } }; MongoRoleDefinitionGetResults mongoRoleDefinitionGetResults3 = mongoClient.CreateUpdateMongoRoleDefinitionWithHttpMessagesAsync(roleId2, this.fixture.ResourceGroupName, databaseAccountName, mongoRoleDefinitionCreateUpdateParameters2).GetAwaiter().GetResult().Body; Assert.NotNull(mongoRoleDefinitionGetResults3); Assert.Equal(roleName2, mongoRoleDefinitionGetResults3.Name); VerifyCreateUpdateRoleDefinition(mongoRoleDefinitionCreateUpdateParameters2, mongoRoleDefinitionGetResults3); MongoRoleDefinitionGetResults mongoRoleDefinitionGetResults4 = mongoClient.GetMongoRoleDefinitionWithHttpMessagesAsync(roleId2, this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoRoleDefinitionGetResults4); Assert.Equal(roleName2, mongoRoleDefinitionGetResults4.Name); VerifyEqualMongoRoleDefinitions(mongoRoleDefinitionGetResults3, mongoRoleDefinitionGetResults4); // Update existing role definition mongoRoleDefinitionCreateUpdateParameters2.Privileges[0].Actions.Add("remove"); mongoRoleDefinitionGetResults3 = mongoClient.CreateUpdateMongoRoleDefinitionWithHttpMessagesAsync(roleId2, this.fixture.ResourceGroupName, databaseAccountName, mongoRoleDefinitionCreateUpdateParameters2).GetAwaiter().GetResult().Body; Assert.NotNull(mongoRoleDefinitionGetResults3); Assert.Equal(roleName2, mongoRoleDefinitionGetResults3.Name); VerifyCreateUpdateRoleDefinition(mongoRoleDefinitionCreateUpdateParameters2, mongoRoleDefinitionGetResults3); // List Role Definition IEnumerable <MongoRoleDefinitionGetResults> mongoRoleDefinitionList = mongoClient.ListMongoRoleDefinitionsWithHttpMessagesAsync(this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoRoleDefinitionList); List <string> roleDefNames = new List <string>(); roleDefNames.Add(roleName1); roleDefNames.Add(roleName2); verifyRoleDefinitionListResponse(mongoRoleDefinitionList, roleDefNames); // User Definition MongoUserDefinitionCreateUpdateParameters mongoUserDefinitionCreateUpdateParameters1 = new MongoUserDefinitionCreateUpdateParameters { UserName = "******", Password = "******", DatabaseName = databaseName, CustomData = "test", Mechanisms = "SCRAM-SHA-256", Roles = new List <Role> { new Role { Db = databaseName, RoleProperty = roleName1 } } }; MongoUserDefinitionGetResults mongoUserDefinitionGetResults = mongoClient.CreateUpdateMongoUserDefinitionWithHttpMessagesAsync(databaseName + ".testuser1", this.fixture.ResourceGroupName, databaseAccountName, mongoUserDefinitionCreateUpdateParameters1).GetAwaiter().GetResult().Body; Assert.NotNull(mongoUserDefinitionGetResults); Assert.Equal("testuser1", mongoUserDefinitionGetResults.UserName); Assert.Equal(mongoUserDefinitionCreateUpdateParameters1.Roles.Count, mongoUserDefinitionGetResults.Roles.Count); Assert.Equal(roleName1, mongoUserDefinitionGetResults.Roles[0].RoleProperty); MongoUserDefinitionGetResults mongoUserDefinitionGetResults2 = mongoClient.GetMongoUserDefinitionWithHttpMessagesAsync(databaseName + ".testuser1", this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoUserDefinitionGetResults2); Assert.Equal("testuser1", mongoUserDefinitionGetResults2.UserName); Assert.Equal(mongoUserDefinitionGetResults2.Roles.Count, mongoUserDefinitionGetResults.Roles.Count); // Update existing user definition mongoUserDefinitionCreateUpdateParameters1.Roles[0].RoleProperty = roleName2; mongoUserDefinitionGetResults = mongoClient.CreateUpdateMongoUserDefinitionWithHttpMessagesAsync(databaseName + ".testuser1", this.fixture.ResourceGroupName, databaseAccountName, mongoUserDefinitionCreateUpdateParameters1).GetAwaiter().GetResult().Body; Assert.NotNull(mongoUserDefinitionGetResults); Assert.Equal("testuser1", mongoUserDefinitionGetResults.UserName); Assert.Equal(mongoUserDefinitionCreateUpdateParameters1.Roles.Count, mongoUserDefinitionGetResults.Roles.Count); Assert.Equal(roleName2, mongoUserDefinitionGetResults.Roles[0].RoleProperty); // List User Definition IEnumerable <MongoUserDefinitionGetResults> mongoUserDefinitionList = mongoClient.ListMongoUserDefinitionsWithHttpMessagesAsync(this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoUserDefinitionList); List <string> userNames = new List <string>(); userNames.Add(userName1); verifyUserDefinitionListResponse(mongoUserDefinitionList, userNames); // Delete User Definition mongoClient.DeleteMongoUserDefinitionWithHttpMessagesAsync(databaseName + "." + userName1, this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult(); mongoUserDefinitionList = mongoClient.ListMongoUserDefinitionsWithHttpMessagesAsync(this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoUserDefinitionList); Assert.True(mongoUserDefinitionList.Count() == 0); // Delete Role Definition mongoClient.DeleteMongoRoleDefinitionWithHttpMessagesAsync(roleId2, this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult(); mongoRoleDefinitionList = mongoClient.ListMongoRoleDefinitionsWithHttpMessagesAsync(this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoRoleDefinitionList); Assert.True(mongoRoleDefinitionList.Count() == 1); mongoClient.DeleteMongoRoleDefinitionWithHttpMessagesAsync(roleId1, this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult(); mongoRoleDefinitionList = mongoClient.ListMongoRoleDefinitionsWithHttpMessagesAsync(this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoRoleDefinitionList); Assert.True(mongoRoleDefinitionList.Count() == 0); IEnumerable <MongoDBDatabaseGetResults> mongoDBDatabases = mongoClient.ListMongoDBDatabasesWithHttpMessagesAsync(this.fixture.ResourceGroupName, databaseAccountName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoDBDatabases); IEnumerable <MongoDBCollectionGetResults> mongoDBCollections = mongoClient.ListMongoDBCollectionsWithHttpMessagesAsync(this.fixture.ResourceGroupName, databaseAccountName, databaseName).GetAwaiter().GetResult().Body; Assert.NotNull(mongoDBCollections); foreach (MongoDBCollectionGetResults mongoDBCollection in mongoDBCollections) { mongoClient.DeleteMongoDBCollectionWithHttpMessagesAsync(this.fixture.ResourceGroupName, databaseAccountName, databaseName, mongoDBCollection.Name); } foreach (MongoDBDatabaseGetResults mongoDBDatabase in mongoDBDatabases) { mongoClient.DeleteMongoDBDatabaseWithHttpMessagesAsync(this.fixture.ResourceGroupName, databaseAccountName, mongoDBDatabase.Name); } } }