Beispiel #1
0
 public async Task HandleRemoveRegisteredServerRequest(RemoveRegisteredServerParams removeServerParams, RequestContext <bool> requestContext)
 {
     Logger.Write(TraceEventType.Verbose, "HandleRemoveServerRequest");
     try
     {
         CmsTask = Task.Run(async() =>
         {
             try
             {
                 // Validate and Connect
                 ServerConnection serverConn = ValidateAndCreateConnection(removeServerParams.ParentOwnerUri);
                 if (serverConn != null)
                 {
                     // Get list of registered Servers
                     RegisteredServersStore store = new RegisteredServersStore(serverConn);
                     ServerGroup parentGroup      = NavigateToServerGroup(store, removeServerParams.RelativePath, false);
                     if (parentGroup != null)
                     {
                         RegisteredServer regServ = parentGroup.RegisteredServers.OfType <RegisteredServer>().FirstOrDefault(r => r.Name == removeServerParams.RegisteredServerName); // since duplicates are not allowed
                         regServ?.Drop();
                         await requestContext.SendResult(true);
                     }
                 }
                 else
                 {
                     await requestContext.SendResult(false);
                 }
             }
             catch (Exception e)
             {
                 await requestContext.SendError(e);
             }
         });
     }
     catch (Exception e)
     {
         await requestContext.SendError(e);
     }
 }
        private async void TestAddRemoveRegisteredServer()
        {
            string        name          = "TestAddRemoveRegisteredServer" + DateTime.Now.ToString();
            ConnectParams connectParams = await CreateAndConnectWithConnectParams();

            // Prepare for Add Reg Server
            var requestContext1 = new Mock <RequestContext <bool> >();

            requestContext1.Setup((RequestContext <bool> x) => x.SendResult(It.Is <bool>((result) => result == true))).Returns(Task.FromResult(new object()));

            AddRegisteredServerParams addRegServerParams = new AddRegisteredServerParams
            {
                RegisteredServerName        = name,
                RegisteredServerDescription = "My Registered Test Server",
                ParentOwnerUri = connectParams.OwnerUri,
                RelativePath   = "RegisteredServersStore/ServerGroup[@Name='DatabaseEngineServerGroup']" //Top level
            };

            // Prepare for list servers
            var requestContext2 = new Mock <RequestContext <ListRegisteredServersResult> >();

            requestContext2.Setup((RequestContext <ListRegisteredServersResult> x) => x.SendResult(It.Is <ListRegisteredServersResult>((listCmsServersResult) => listCmsServersResult.RegisteredServersList.Find(p => p.Name.Contains(name)) != null))).Returns(Task.FromResult(new object()));

            ListRegisteredServersParams listServersParams = new ListRegisteredServersParams
            {
                ParentOwnerUri = connectParams.OwnerUri,
                RelativePath   = "RegisteredServersStore/ServerGroup[@Name='DatabaseEngineServerGroup']"
            };

            // Prepare for remove Server
            var requestContext3 = new Mock <RequestContext <bool> >();

            requestContext1.Setup((RequestContext <bool> x) => x.SendResult(It.Is <bool>((result) => result == true))).Returns(Task.FromResult(new object()));

            RemoveRegisteredServerParams removeRegServerParams = new RemoveRegisteredServerParams
            {
                ParentOwnerUri       = connectParams.OwnerUri,
                RegisteredServerName = name,
                RelativePath         = string.Format("RegisteredServersStore/ServerGroup[@Name='DatabaseEngineServerGroup']/RegisteredServer[@Name='{0}']", name)
            };

            // Actual test after preparation start here
            CmsService cmsService = CmsService.Instance;

            // Add Reg Server
            await cmsService.HandleAddRegisteredServerRequest(addRegServerParams, requestContext1.Object);

            await cmsService.CmsTask;

            requestContext1.VerifyAll();

            // List to validate
            await cmsService.HandleListRegisteredServersRequest(listServersParams, requestContext2.Object);

            await cmsService.CmsTask;

            requestContext2.VerifyAll();

            // Clean up
            await cmsService.HandleRemoveRegisteredServerRequest(removeRegServerParams, requestContext3.Object);

            await cmsService.CmsTask;

            requestContext3.VerifyAll();
        }