Antti Kaijanmäki has proposed merging
lp:~unity-api-team/kubuntu-packaging/qt-purchasing-packaging into
lp:~kubuntu-packagers/kubuntu-packaging/qtpurchasing-opensource-src.
Commit message:
update distro patch.
Requested reviews:
Kubuntu Packagers (kubuntu-packagers)
For more details, see:
https://code.launchpad.net/~unity-api-team/kubuntu-packaging/qt-purchasing-packaging/+merge/282479
--
Your team Kubuntu Packagers is requested to review the proposed merge of
lp:~unity-api-team/kubuntu-packaging/qt-purchasing-packaging into
lp:~kubuntu-packagers/kubuntu-packaging/qtpurchasing-opensource-src.
=== modified file 'debian/patches/ubuntu_libpay_backend.diff'
--- debian/patches/ubuntu_libpay_backend.diff 2015-10-15 22:31:01 +0000
+++ debian/patches/ubuntu_libpay_backend.diff 2016-01-13 17:41:24 +0000
@@ -1,3 +1,15 @@
+diff --git a/.gitignore b/.gitignore
+index 4a5200a..a34a6af 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -81,6 +81,7 @@ tst_*~
+ # ---------------------
+
+ debug
++build
+ include/*
+ include/*/*
+ lib/*
diff --git a/src/purchasing/inapppurchase/inapppurchase.pri b/src/purchasing/inapppurchase/inapppurchase.pri
index 85bab80..b6f3abc 100644
--- a/src/purchasing/inapppurchase/inapppurchase.pri
@@ -194,10 +206,10 @@
+#endif // QUBUNTUINAPPPRODUCT_P_H
diff --git a/src/purchasing/inapppurchase/ubuntu/qubuntuinapppurchasebackend.cpp b/src/purchasing/inapppurchase/ubuntu/qubuntuinapppurchasebackend.cpp
new file mode 100644
-index 0000000..cc3c556
+index 0000000..a879e77
--- /dev/null
+++ b/src/purchasing/inapppurchase/ubuntu/qubuntuinapppurchasebackend.cpp
-@@ -0,0 +1,272 @@
+@@ -0,0 +1,275 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
@@ -408,19 +420,22 @@
+
+ if (prev == PAY_PACKAGE_ITEM_STATUS_PURCHASING)
+ {
-+ if ((status == PAY_PACKAGE_ITEM_STATUS_APPROVED) ||
-+ (status == PAY_PACKAGE_ITEM_STATUS_PURCHASED))
-+ {
-+ auto item = pay_package_get_item(m_package.data(), qUtf8Printable(sku));
++ auto item = pay_package_get_item(m_package.data(), qUtf8Printable(sku));
++
++ switch (status) {
++ case PAY_PACKAGE_ITEM_STATUS_APPROVED:
++ case PAY_PACKAGE_ITEM_STATUS_PURCHASED:
+ emitTransactionReadyForItem(item, QInAppTransaction::PurchaseApproved);
-+ pay_item_unref(item);
-+ }
-+ else if (status == PAY_PACKAGE_ITEM_STATUS_NOT_PURCHASED)
-+ {
-+ auto item = pay_package_get_item(m_package.data(), qUtf8Printable(sku));
++ break;
++ case PAY_PACKAGE_ITEM_STATUS_NOT_PURCHASED:
++ case PAY_PACKAGE_ITEM_STATUS_UNKNOWN:
+ emitTransactionReadyForItem(item, QInAppTransaction::PurchaseFailed);
-+ pay_item_unref(item);
++ break;
++ default:
++ qCritical() << "Unexpected status transition to:" << status;
++ break;
+ }
++ pay_item_unref(item);
+ }
+
+ m_statuses[sku] = status;
@@ -1041,10 +1056,10 @@
+#endif // STORE_MOCK_H
diff --git a/tests/auto/purchasing/ubuntu/tst_qinappstore_ubuntu.cpp b/tests/auto/purchasing/ubuntu/tst_qinappstore_ubuntu.cpp
new file mode 100644
-index 0000000..6eae435
+index 0000000..adf6cee
--- /dev/null
+++ b/tests/auto/purchasing/ubuntu/tst_qinappstore_ubuntu.cpp
-@@ -0,0 +1,339 @@
+@@ -0,0 +1,423 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
@@ -1118,6 +1133,8 @@
+ void registeredProducts();
+ void restorePurchases();
+ void successfulPurchase();
++ void purchaseCancelled();
++ void purchaseAccessDenied();
+
+private:
+
@@ -1138,7 +1155,9 @@
+ QMap<QString,IAP> m_iaps {
+ { "sword", { 0, 0, 0, "available", "$1", QInAppProduct::Consumable, "sword", "Sword", "A Sword." } },
+ { "shield", { 1000, 0, 100, "approved", "$1", QInAppProduct::Unlockable, "shield", "Shield", "A Shield." } },
-+ { "amulet", { 1000, 1010, 101, "purchased", "$1", QInAppProduct::Unlockable, "amulet", "Amulet", "An Amulet." } }
++ { "amulet", { 1000, 1010, 101, "purchased", "$1", QInAppProduct::Unlockable, "amulet", "Amulet", "An Amulet." } },
++ { "cancel", { 0, 0, 0, "available", "$0", QInAppProduct::Unlockable, "cancel", "Cancel", "For testing cancelling of purchase." } },
++ { "denied", { 0, 0, 0, "available", "$0", QInAppProduct::Unlockable, "denied", "Denied", "For testing access denied by trust store." } }
+ };
+
+ void verifyProduct(const QInAppProduct *product, const IAP item) {
@@ -1380,6 +1399,86 @@
+ QCOMPARE(finalizedSku, sku);
+}
+
++void tst_QInAppStore::purchaseCancelled()
++{
++ // SETUP
++
++ StoreMock mock (PACKAGE_S, storeItems());
++
++ // instantiate a store with the registered products
++ QInAppStore store(this);
++ for (const auto &item : m_iaps)
++ store.registerProduct(item.type, item.sku);
++
++ // Set our expectations.
++
++ const int expectedRegistered = 0;
++ const int expectedUnknown = 0;
++ const int expectedReady = 1;
++ const auto sku = QString::fromUtf8("cancel");
++ const auto expectedTimeStamp = QDateTime::currentDateTime();
++
++ // TEST: PURCHASE
++
++ QSignalSpy registered (&store, SIGNAL(productRegistered(QInAppProduct *)));
++ QSignalSpy unknown (&store, SIGNAL(productUnknown(QInAppProduct::ProductType,QString)));
++ QSignalSpy ready (&store, SIGNAL(transactionReady(QInAppTransaction *)));
++
++ auto product = store.registeredProduct(sku);
++ QVERIFY(product != nullptr);
++ product->purchase();
++
++ QTRY_COMPARE (ready.length(), expectedReady);
++ QCOMPARE (registered.length(), expectedRegistered);
++ QCOMPARE (unknown.length(), expectedUnknown);
++ auto transaction = ready.at(0).at(0).value<QInAppTransaction *>();
++ QVERIFY (transaction->errorString().isEmpty());
++ QCOMPARE (transaction->failureReason(), QInAppTransaction::NoFailure);
++ QVERIFY (transaction->orderId() != 0);
++ verifyProduct(transaction->product(), m_iaps[sku]);
++ QCOMPARE (transaction->status(), QInAppTransaction::PurchaseFailed);
++}
++
++void tst_QInAppStore::purchaseAccessDenied()
++{
++ // SETUP
++
++ StoreMock mock (PACKAGE_S, storeItems());
++
++ // instantiate a store with the registered products
++ QInAppStore store(this);
++ for (const auto &item : m_iaps)
++ store.registerProduct(item.type, item.sku);
++
++ // Set our expectations.
++
++ const int expectedRegistered = 0;
++ const int expectedUnknown = 0;
++ const int expectedReady = 1;
++ const auto sku = QString::fromUtf8("denied");
++ const auto expectedTimeStamp = QDateTime::currentDateTime();
++
++ // TEST: PURCHASE
++
++ QSignalSpy registered (&store, SIGNAL(productRegistered(QInAppProduct *)));
++ QSignalSpy unknown (&store, SIGNAL(productUnknown(QInAppProduct::ProductType,QString)));
++ QSignalSpy ready (&store, SIGNAL(transactionReady(QInAppTransaction *)));
++
++ auto product = store.registeredProduct(sku);
++ QVERIFY(product != nullptr);
++ product->purchase();
++
++ QTRY_COMPARE (ready.length(), expectedReady);
++ QCOMPARE (registered.length(), expectedRegistered);
++ QCOMPARE (unknown.length(), expectedUnknown);
++ auto transaction = ready.at(0).at(0).value<QInAppTransaction *>();
++ QVERIFY (transaction->errorString().isEmpty());
++ QCOMPARE (transaction->failureReason(), QInAppTransaction::NoFailure);
++ QVERIFY (transaction->orderId() != 0);
++ verifyProduct(transaction->product(), m_iaps[sku]);
++ QCOMPARE (transaction->status(), QInAppTransaction::PurchaseFailed);
++}
++
+
+QTEST_GUILESS_MAIN(tst_QInAppStore)
+
--
kubuntu-devel mailing list
[email protected]
Modify settings or unsubscribe at:
https://lists.ubuntu.com/mailman/listinfo/kubuntu-devel