public string GetOBWriteDomesticConsentResponse2()
        {
            string consentId = Guid.NewGuid().ToString();

            OBWriteDomestic2DataInitiationInstructedAmount instructedAmount =
                new OBWriteDomestic2DataInitiationInstructedAmount(amount: "50", currency: "GBP");
            OBWriteDomestic2DataInitiationCreditorAccount creditorAccount =
                new OBWriteDomestic2DataInitiationCreditorAccount(
                    schemeName: "IBAN",
                    identification: "BE56456394728288",
                    name: "ACME DIY",
                    secondaryIdentification: "secondary-identif");
            OBWriteDomestic2DataInitiation domestic2 = new OBWriteDomestic2DataInitiation(
                instructionIdentification: "instr-identification",
                endToEndIdentification: "e2e-identification",
                localInstrument: null,
                instructedAmount: instructedAmount,
                debtorAccount: null,
                creditorAccount: creditorAccount);
            OBWriteDomesticConsentResponse4Data data = new OBWriteDomesticConsentResponse4Data(
                consentId: consentId,
                creationDateTime: DateTime.Now,
                status: OBWriteDomesticConsentResponse4Data.StatusEnum.AwaitingAuthorisation,
                statusUpdateDateTime: DateTime.Now,
                cutOffDateTime: DateTime.Now.Add(new TimeSpan(days: 1, hours: 0, minutes: 0, seconds: 0)),
                expectedExecutionDateTime: DateTime.Now,
                expectedSettlementDateTime: DateTime.Now,
                charges: null,
                initiation: domestic2);
            OBRisk1DeliveryAddress deliveryAddress = new OBRisk1DeliveryAddress
            {
                StreetName     = "Oxford Street",
                BuildingNumber = "42",
                PostCode       = "SW1 1AA",
                TownName       = "London",
                Country        = "UK"
            };
            OBRisk1 risk = new OBRisk1(
                paymentContextCode: OBRisk1.PaymentContextCodeEnum.EcommerceGoods,
                merchantCategoryCode: null,
                merchantCustomerIdentification: null,
                deliveryAddress: deliveryAddress);

            Links links = new Links($"{MockRoutes.Url}/{MockRoutes.DomesticPayments}/{consentId}");

            Meta meta = new Meta(1);

            OBWriteDomesticConsentResponse4 model = new OBWriteDomesticConsentResponse4(
                data: data,
                risk: risk,
                links: links,
                meta: meta);

            return(JsonConvert.SerializeObject(model));
        }
        public void DeliveryAddress_ValueRetained()
        {
            var ctx = new DomesticPaymentConsentContext(TestDataFactory.CreateMockOpenBankingContext())
            {
                Data = null
            };

            var value = new OBRisk1DeliveryAddress();

            ctx.DeliveryAddress(value);

            ctx.Data.DomesticConsent.Risk.DeliveryAddress.Should().Be(value);
        }
        // HACK: need better abstractions
        public static DomesticPaymentConsentContext DeliveryAddress(
            this DomesticPaymentConsentContext context,
            OBRisk1DeliveryAddress value)
        {
            context.ArgNotNull(nameof(context));

            if (value != null)
            {
                context.GetOrCreateDefault(BaseLens)
                .GetOrCreateDefault(DomesticConsentLens)
                .GetOrCreateDefault(RiskLens).DeliveryAddress = value;
            }

            return(context);
        }
        public string GetOBWriteDomesticConsent2()
        {
            OBWriteDomestic2DataInitiationInstructedAmount instructedAmount =
                new OBWriteDomestic2DataInitiationInstructedAmount(amount: "50", currency: "GBP");
            OBWriteDomestic2DataInitiationCreditorAccount creditorAccount =
                new OBWriteDomestic2DataInitiationCreditorAccount(
                    schemeName: "IBAN",
                    identification: "BE56456394728288",
                    name: "ACME DIY",
                    secondaryIdentification: "secondary-identif");
            OBWriteDomestic2DataInitiationRemittanceInformation remittanceInformation =
                new OBWriteDomestic2DataInitiationRemittanceInformation(unstructured: "Tools", reference: "Tools");
            OBWriteDomestic2DataInitiation domestic2 = new OBWriteDomestic2DataInitiation(
                instructionIdentification: "instr-identification",
                endToEndIdentification: "e2e-identification",
                localInstrument: null,
                instructedAmount: instructedAmount,
                debtorAccount: null,
                creditorAccount: creditorAccount,
                remittanceInformation: remittanceInformation);
            OBWriteDomesticConsent4Data data = new OBWriteDomesticConsent4Data
            {
                Initiation = domestic2
            };

            OBRisk1DeliveryAddress deliveryAddress = new OBRisk1DeliveryAddress
            {
                StreetName     = "Oxford Street",
                BuildingNumber = "42",
                PostCode       = "SW1 1AA",
                TownName       = "London",
                Country        = "UK"
            };
            OBRisk1 risk = new OBRisk1(
                paymentContextCode: OBRisk1.PaymentContextCodeEnum.EcommerceGoods,
                merchantCategoryCode: null,
                merchantCustomerIdentification: null,
                deliveryAddress: deliveryAddress);

            OBWriteDomesticConsent4 model = new OBWriteDomesticConsent4(data: data, risk: risk);

            return(JsonConvert.SerializeObject(model));
        }