public void DeserializeResponse_InApp_With_No_Expiration_Date()
        {
            string json = GetVerifiedReceiptJson("Valid_Sandbox_Consumable_And_Active_Subscription_Excluding_Old_Transactions");

            var receipt = AppleReceiptVerifier.DeserializeResponse(json);

            Assert.Null(receipt.Receipt.InApp.First().ExpiresDate);
        }
        public void DeserializeResponse_Does_Not_Throw_Correct_Status_And_Validity(string responseName, bool isValid, KnownStatusCodes statusCode)
        {
            string json = GetVerifiedReceiptJson(responseName);

            var receipt = AppleReceiptVerifier.DeserializeResponse(json);

            Assert.Equal(isValid, receipt.IsValid);
            Assert.Equal(statusCode, (KnownStatusCodes)receipt.Status);
        }
        public void DeserializeResponse_Invalid_Malformed_Receipt_Data()
        {
            string json = GetVerifiedReceiptJson("Invalid_Malformed_Receipt_Data");

            var receipt = AppleReceiptVerifier.DeserializeResponse(json);

            Assert.False(receipt.IsValid);
            Assert.Equal(KnownStatusCodes.MalformedReceiptData, (KnownStatusCodes)receipt.Status);
        }
        public void DeserializeResponse_Invalid_Bad_App_Password()
        {
            string json = GetVerifiedReceiptJson("Invalid_Bad_App_Password");

            var receipt = AppleReceiptVerifier.DeserializeResponse(json);

            Assert.False(receipt.IsValid);
            Assert.Equal(KnownStatusCodes.BadAppPassword, (KnownStatusCodes)receipt.Status);
        }
        public void DeserializeResponse_Valid_Excluding_Old_Subscriptions()
        {
            string json = GetVerifiedReceiptJson("Valid_Production_Excluding_Old_Subscriptions");

            var receipt = AppleReceiptVerifier.DeserializeResponse(json);

            Assert.Equal(KnownStatusCodes.Valid, (KnownStatusCodes)receipt.Status);
            Assert.True(receipt.IsValid);
            Assert.Single(receipt.LatestReceiptInfo !);

            var lastReceiptInfo = receipt.LatestReceiptInfo !.Single();

            Assert.Equal("com.test.app.proYearly", lastReceiptInfo.ProductId);

            Assert.Equal(DateTimeOffset.FromUnixTimeMilliseconds(1592834224000), lastReceiptInfo.PurchaseDate);

            Assert.Equal(DateTimeOffset.FromUnixTimeMilliseconds(1592575025000), lastReceiptInfo.OriginalPurchaseDate);

            Assert.Equal(DateTimeOffset.FromUnixTimeMilliseconds(1624370224000), lastReceiptInfo.ExpiresDate);

            Assert.False(lastReceiptInfo.IsTrialPeriod);
        }