Ejemplo n.º 1
0
        private async Task DeleteRequestsHalfApplications()
        {
            Skip.If(!_fixture.RegistrationOk);
            foreach (var application in _applicationTestSet)
            {
                foreach (var requestId in application.RequestIds)
                {
                    if (_randomSource.NextInt32(100) > 50)
                    {
                        var request = await _certificateRequest.ReadAsync(requestId);

                        if (request.State == CertificateRequestState.New ||
                            request.State == CertificateRequestState.Rejected ||
                            request.State == CertificateRequestState.Approved ||
                            request.State == CertificateRequestState.Accepted)
                        {
                            await _certificateRequest.DeleteAsync(requestId);
                        }
                        else
                        {
                            await Assert.ThrowsAsync <ResourceInvalidStateException>(async() =>
                            {
                                await _certificateRequest.DeleteAsync(requestId);
                            });
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <inheritdoc/>
        public async Task DeleteApplicationAsync(string applicationId, bool force)
        {
            Guid appId       = ToGuidAndVerify(applicationId);
            var  application = await _applications.GetAsync(appId);

            if (!force &&
                application.ApplicationState < ApplicationState.Unregistered)
            {
                throw new ResourceInvalidStateException("The record is not in a valid state for this operation.");
            }

            if (_scope != null)
            {
                ICertificateRequest certificateRequestsService = _scope.Resolve <ICertificateRequest>();
                // mark all requests as deleted
                ReadRequestResultModel[] certificateRequests;
                string nextPageLink = null;
                do
                {
                    (nextPageLink, certificateRequests) = await certificateRequestsService.QueryPageAsync(appId.ToString(), null, nextPageLink);

                    foreach (var request in certificateRequests)
                    {
                        await certificateRequestsService.DeleteAsync(request.RequestId);
                    }
                } while (nextPageLink != null);
            }
            await _applications.DeleteAsync(appId);
        }
Ejemplo n.º 3
0
 public async Task DeleteCertificateRequestAsync(string requestId)
 {
     await _certificateRequest.DeleteAsync(requestId);
 }
Ejemplo n.º 4
0
        /// <inheritdoc/>
        public async Task <Application> UnregisterApplicationAsync(string applicationId)
        {
            Guid        appId = ToGuidAndVerify(applicationId);
            bool        retryUpdate;
            bool        first = true;
            Application record;

            do
            {
                retryUpdate = false;

                List <byte[]> certificates = new List <byte[]>();

                record = await _applications.GetAsync(appId);

                if (record == null)
                {
                    throw new ResourceNotFoundException("A record with the specified application id does not exist.");
                }

                if (record.ApplicationState >= ApplicationState.Unregistered)
                {
                    throw new ResourceInvalidStateException("The record is not in a valid state for this operation.");
                }

                if (first && _scope != null)
                {
                    ICertificateRequest certificateRequestsService = _scope.Resolve <ICertificateRequest>();
                    // mark all requests as deleted
                    ReadRequestResultModel[] certificateRequests;
                    string nextPageLink = null;
                    do
                    {
                        (nextPageLink, certificateRequests) = await certificateRequestsService.QueryPageAsync(appId.ToString(), null, nextPageLink);

                        foreach (var request in certificateRequests)
                        {
                            if (request.State < CertificateRequestState.Deleted)
                            {
                                await certificateRequestsService.DeleteAsync(request.RequestId);
                            }
                        }
                    } while (nextPageLink != null);
                }
                first = false;

                record.ApplicationState = ApplicationState.Unregistered;
                record.DeleteTime       = DateTime.UtcNow;

                try
                {
                    await _applications.UpdateAsync(appId, record, record.ETag);
                }
                catch (DocumentClientException dce)
                {
                    if (dce.StatusCode == HttpStatusCode.PreconditionFailed)
                    {
                        retryUpdate = true;
                    }
                }
            } while (retryUpdate);

            return(record);
        }