/**********************************************************************************/

        private bool doRegisterReports(string reportRequestID = null)
        {
            //ReportDescription reportDescription = m_resources.ReportDescription;
            Dictionary <string, ReportWrapper> reports = m_resources.Reports;

            RegisterReport registerReport;
            CreatedReport  createdReport = null;

            lock (m_ven)
            {
                registerReport = m_ven.registerReport(RandomHex.instance().generateRandomHex(10), reports, reportRequestID);

                // check for piggy backed report requests
                if (registerReport.response.oadrReportRequest != null)
                {
                    // send the createReport callback immediately to allow UI's to update
                    // if there's a one shot or history report request, these reports
                    // need to be registered before processCreatedReport() is called below
                    m_callbacks.processCreateReport(registerReport.response.oadrReportRequest);

                    m_resources.createReport(registerReport.response.oadrReportRequest);

                    // issue a createdReport message using the requestID from the registerReport message
                    createdReport = m_ven.createdReport(registerReport.request.requestID, 200, "OK", m_resources.PendingReports);
                }
            }

            m_callbacks.processRegisterReport(registerReport);

            // the registerReport response included a piggy-backed reportRequest
            if (createdReport != null)
            {
                m_callbacks.processCreatedReport(createdReport);

                // the new report might have a start date of NOW; call sendReports to force
                // the report to be sent immediately
                m_resources.sendReports(DateTime.Now);
            }


            if (registerReport.eiResponseCode != 200)
            {
                return(false);
            }

            return(true);
        }
        public void N1_0020_TH_VTN_1()
        {
            VEN2b ven = new VEN2b(new HttpWebRequestWrapper(false, System.Net.SecurityProtocolType.Tls12), TestProperties.vtnURL, TestProperties.venName, TestProperties.venID, TestProperties.venPassword);

            // register
            CreatePartyRegistration createPartyRegistration = ven.createPartyRegistration(RandomHex.instance().generateRandomHex(10), oadrProfileType.Item20b, oadrTransportType.simpleHttp, "", false, false, true);

            Assert.IsTrue(createPartyRegistration.response != null);

            Console.Out.WriteLine(createPartyRegistration.responseBody);

            // POLL
            OadrPoll oadrPoll = ven.poll();

            Assert.IsNotNull(oadrPoll.response);

            Console.Out.WriteLine(oadrPoll.responseBody);

            // First request is registerReport
            Assert.IsTrue(oadrPoll.responseTypeIs(typeof(oadrRegisterReportType)));

            oadrRegisterReportType registerReportType = oadrPoll.getRegisterReportResponse();

            RegisteredReport registeredReport = ven.registeredReport(registerReportType.requestID, "200", "OK");

            Assert.IsNotNull(registeredReport.response);
            Assert.AreEqual(registeredReport.response.eiResponse.responseCode, "200");

            // register our own report
            ReportDescription reportDescription = ReportHelper.generateReportDescription();

            RegisterReport registerReport = ven.registerReport(RandomHex.instance().generateRandomHex(10), reportDescription);

            Assert.IsNotNull(registerReport.response);

            Assert.AreEqual("200", registerReport.response.eiResponse.responseCode);

            Assert.AreEqual(registerReport.request.requestID, registerReport.response.eiResponse.requestID);
        }