public void SyncMembers_DeactivateMembers_Test() { //arrange var repoMock = BuildMemberRepository(); var pathHelperMock = BuildPathHelper(); var fileHelperMock = BuildFileHelper(); var memberService = new MemberService( repoMock.Object, null, fileHelperMock.Object, pathHelperMock.Object, Mock.Of <IManagementDepartmentService>(), Mock.Of <ISecurityService>(), Mock.Of <IAppSettingHelper>()); var member = new Member() { Id = Guid.NewGuid(), RoleList = new List <Role>() { new Role() { Id = Guid.NewGuid() } } }; var syncMember = new SyncMember() { Id = member.Id, RoleList = member.RoleList, AvatarFileContent = Guid.NewGuid().ToByteArray() }; var syncMembers = new[] { syncMember }.ToJson(); var activeUserIds = Enumerable.Empty <Guid>(); //act memberService.SyncMembers(syncMembers, activeUserIds); //assert repoMock.Verify(r => r.UpdateManySingleProperty(It.IsAny <Expression <Func <Member, bool> > >(), It.IsAny <Expression <Func <Member, bool> > >(), It.Is((bool b) => b)), Times.Once); }
private static void VerifySyncMemberInformation(SyncMember syncMember, SyncDirectionEnum syncDirection, DatabaseTypeEnum databaseType, string memberServerName, string memberDatabaseName) { Assert.Equal(syncDirection, syncMember.Properties.SyncDirection); Assert.Equal(databaseType, syncMember.Properties.DatabaseType); if (databaseType == DatabaseTypeEnum.AzureSqlDatabase) { Assert.Equal(memberDatabaseName, syncMember.Properties.DatabaseName); Assert.Equal(memberServerName, syncMember.Properties.ServerName); } }
/// <summary> /// Converts the response from the service to a powershell sync member object /// </summary> /// <param name="resourceGroupName">The resource group the sync member is in</param> /// <param name="serverName">The name of the server</param> /// <param name="databaseName">The name of the database</param> /// <param name="syncMember">The sync member object from the response</param> /// <returns>The converted model</returns> public static AzureSqlSyncMemberModel CreateSyncMemberModelFromResponse(string resourceGroupName, string serverName, string databaseName, string syncGroupName, SyncMember syncMember) { return(new AzureSqlSyncMemberModel(resourceGroupName, serverName, databaseName, syncGroupName, syncMember)); }
/// <summary> /// Construct AzureSqlSyncMemberModel for Management.Sql.Models.syncMember object /// </summary> /// <param name="resourceGroupName">Resource group name</param> /// <param name="serverName">Server name</param> /// <param name="databaseName">Databse name</param> /// <param name="syncGroup">sync member object</param> public AzureSqlSyncMemberModel(string resourceGroup, string serverName, string databaseName, string syncGroupName, SyncMember syncMember) { ResourceGroupName = resourceGroup; ServerName = serverName; DatabaseName = databaseName; ResourceId = syncMember.Id; SyncGroupName = syncGroupName; SyncMemberName = syncMember.Name; SyncDirection = syncMember.Properties.SyncDirection == null ? null : syncMember.Properties.SyncDirection.ToString(); SyncAgentId = syncMember.Properties.SyncAgentId; SqlServerDatabaseId = syncMember.Properties.SqlServerDatabaseId; MemberServerName = syncMember.Properties.ServerName; MemberDatabaseName = syncMember.Properties.DatabaseName; MemberDatabaseUserName = syncMember.Properties.UserName; MemberDatabaseType = syncMember.Properties.DatabaseType == null ? null : syncMember.Properties.DatabaseType.ToString(); SyncState = syncMember.Properties.SyncState; }
/// <summary> /// Construct AzureSqlSyncMemberModel for Management.Sql.Models.syncMember object /// </summary> /// <param name="resourceGroupName">Resource group name</param> /// <param name="serverName">Server name</param> /// <param name="databaseName">Databse name</param> /// <param name="syncGroup">sync member object</param> public AzureSqlSyncMemberModel(string resourceGroup, string serverName, string databaseName, string syncGroupName, SyncMember syncMember) { ResourceGroupName = resourceGroup; ServerName = serverName; DatabaseName = databaseName; ResourceId = syncMember.Id; SyncGroupName = syncGroupName; SyncMemberName = syncMember.Name; SyncDirection = syncMember.SyncDirection == null ? null : syncMember.SyncDirection.ToString(); SyncAgentId = syncMember.SyncAgentId; SqlServerDatabaseId = syncMember.SqlServerDatabaseId == null ? null : syncMember.SqlServerDatabaseId.ToString(); MemberServerName = syncMember.ServerName; MemberDatabaseName = syncMember.DatabaseName; MemberDatabaseUserName = syncMember.UserName; MemberDatabaseType = syncMember.DatabaseType == null ? null : syncMember.DatabaseType.ToString(); SyncState = syncMember.SyncState; UsePrivateLinkConnection = syncMember.UsePrivateLinkConnection; SyncMemberAzureDatabaseResourceId = syncMember.SyncMemberAzureDatabaseResourceId; }
/// <summary> /// Updates an existing sync member. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group that contains the resource. You can obtain /// this value from the Azure Resource Manager API or the portal. /// </param> /// <param name='serverName'> /// The name of the server. /// </param> /// <param name='databaseName'> /// The name of the database on which the sync group is hosted. /// </param> /// <param name='syncGroupName'> /// The name of the sync group on which the sync member is hosted. /// </param> /// <param name='syncMemberName'> /// The name of the sync member. /// </param> /// <param name='parameters'> /// The requested sync member resource state. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <SyncMember> BeginUpdateAsync(this ISyncMembersOperations operations, string resourceGroupName, string serverName, string databaseName, string syncGroupName, string syncMemberName, SyncMember parameters, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.BeginUpdateWithHttpMessagesAsync(resourceGroupName, serverName, databaseName, syncGroupName, syncMemberName, parameters, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// Updates an existing sync member. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group that contains the resource. You can obtain /// this value from the Azure Resource Manager API or the portal. /// </param> /// <param name='serverName'> /// The name of the server. /// </param> /// <param name='databaseName'> /// The name of the database on which the sync group is hosted. /// </param> /// <param name='syncGroupName'> /// The name of the sync group on which the sync member is hosted. /// </param> /// <param name='syncMemberName'> /// The name of the sync member. /// </param> /// <param name='parameters'> /// The requested sync member resource state. /// </param> public static SyncMember BeginUpdate(this ISyncMembersOperations operations, string resourceGroupName, string serverName, string databaseName, string syncGroupName, string syncMemberName, SyncMember parameters) { return(operations.BeginUpdateAsync(resourceGroupName, serverName, databaseName, syncGroupName, syncMemberName, parameters).GetAwaiter().GetResult()); }
public void SyncMemberCRUDTest() { string testPrefix = "syncmembercrudtest-"; using (SqlManagementTestContext context = new SqlManagementTestContext(this)) { ResourceGroup resourceGroup = context.CreateResourceGroup(); SqlManagementClient sqlClient = context.GetClient <SqlManagementClient>(); Server server = context.CreateServer(resourceGroup); // Create sync database string syncDatabaseName = SqlManagementTestUtilities.GenerateName(testPrefix + "sync"); Database syncDatabase = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, syncDatabaseName, new Database() { Location = server.Location, }); Assert.NotNull(syncDatabase); Assert.NotNull(syncDatabase.Id); // Create database string testDatabaseName = SqlManagementTestUtilities.GenerateName(testPrefix + "test"); Database testDatabase = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, testDatabaseName, new Database() { Location = server.Location, }); Assert.NotNull(testDatabase); // Create member database string memberDatabaseName = SqlManagementTestUtilities.GenerateName(testPrefix + "member"); Database memberDatabase = sqlClient.Databases.CreateOrUpdate(resourceGroup.Name, server.Name, memberDatabaseName, new Database() { Location = server.Location, }); Assert.NotNull(memberDatabase); // Create sync group string syncGroupName = SqlManagementTestUtilities.GenerateName(testPrefix + "syncgroup"); SyncGroup createSyncGroup = sqlClient.SyncGroups.CreateOrUpdate(resourceGroup.Name, server.Name, testDatabaseName, syncGroupName, new SyncGroup { Interval = -1, // Manual ConflictResolutionPolicy = SyncConflictResolutionPolicy.MemberWin, SyncDatabaseId = syncDatabase.Id, HubDatabaseUserName = SqlManagementTestUtilities.DefaultLogin, HubDatabasePassword = SqlManagementTestUtilities.DefaultPassword }); Assert.NotNull(createSyncGroup); #region Azure SQL database member // Create an Azure SQL database member string syncMemberName = SqlManagementTestUtilities.GenerateName(testPrefix + "azsyncmember"); string syncMemberDirection = SyncDirection.OneWayMemberToHub; string syncMemberDatabaseType = SyncMemberDbType.AzureSqlDatabase; SyncMember createSyncMember = sqlClient.SyncMembers.CreateOrUpdate(resourceGroup.Name, server.Name, testDatabaseName, syncGroupName, syncMemberName, new SyncMember { SyncDirection = syncMemberDirection, DatabaseType = syncMemberDatabaseType, DatabaseName = memberDatabaseName, ServerName = server.Name, UserName = SqlManagementTestUtilities.DefaultLogin, Password = SqlManagementTestUtilities.DefaultPassword, }); Assert.NotNull(createSyncMember); Assert.Equal(syncMemberDirection, createSyncMember.SyncDirection); Assert.Equal(syncMemberDatabaseType, createSyncMember.DatabaseType); Assert.Equal(memberDatabaseName, createSyncMember.DatabaseName); Assert.Equal(server.Name, createSyncMember.ServerName); // Get Azure SQL database member SyncMember getSyncMember = sqlClient.SyncMembers.Get(resourceGroup.Name, server.Name, testDatabaseName, syncGroupName, syncMemberName); Assert.NotNull(getSyncMember); Assert.Equal(syncMemberDirection, getSyncMember.SyncDirection); Assert.Equal(syncMemberDatabaseType, getSyncMember.DatabaseType); Assert.Equal(memberDatabaseName, getSyncMember.DatabaseName); Assert.Equal(server.Name, getSyncMember.ServerName); // List sync members IPage <SyncMember> listSyncMembers = sqlClient.SyncMembers.ListBySyncGroup(resourceGroup.Name, server.Name, testDatabaseName, syncGroupName); Assert.NotNull(listSyncMembers); Assert.Equal(1, listSyncMembers.Count()); Assert.Equal(syncMemberName, listSyncMembers.Single().Name); // Update sync member string updateSyncMemberDirection = SyncDirection.Bidirectional; SyncMember updateSyncMember = sqlClient.SyncMembers.Update(resourceGroup.Name, server.Name, testDatabaseName, syncGroupName, syncMemberName, new SyncMember { SyncDirection = updateSyncMemberDirection, DatabaseType = syncMemberDatabaseType, UserName = SqlManagementTestUtilities.DefaultLogin, Password = SqlManagementTestUtilities.DefaultPassword, }); Assert.NotNull(updateSyncMember); Assert.Equal(updateSyncMemberDirection, updateSyncMember.SyncDirection); Assert.NotEqual(syncMemberDirection, updateSyncMemberDirection); // Update sync member with an empty model Assert.Throws <CloudException>(() => { sqlClient.SyncMembers.Update(resourceGroup.Name, server.Name, testDatabaseName, syncGroupName, syncMemberName, new SyncMember()); }); // Refresh member schemas sqlClient.SyncMembers.RefreshMemberSchema(resourceGroup.Name, server.Name, testDatabaseName, syncGroupName, syncMemberName); // List member schemas IPage <SyncFullSchemaProperties> memberSchemas = sqlClient.SyncMembers.ListMemberSchemas(resourceGroup.Name, server.Name, testDatabaseName, syncGroupName, syncMemberName); Assert.NotNull(memberSchemas); // Delete Azure SQL database member sqlClient.SyncMembers.Delete(resourceGroup.Name, server.Name, testDatabaseName, syncGroupName, syncMemberName); #endregion } }