php - How to test license validation via REST API -
कृपया निम्न PHP कोड पर विचार करें
स्थिर सार्वजनिक फ़ंक्शन IsLicenseValid ($ domain) {if (खाली ($ डोमेन)) {नया अपवाद फेंकना; } $ LicenseResponse = Curl :: पोस्ट (['होस्टनाम' = & gt; $ डोमेन]); $ Xml = नया XML (); $ XmlTree = $ Xml- & gt; XMLToTree ($ लाइसेंस रीस्पेंस); अगर ($ xmlTree ['is_valid'] == 'सच') {वापस सत्य; } } विवरण झूठा है; }
मैं ऊपर विधि की जांच के लिए PHPUnit का उपयोग कर परीक्षण केस लिख रहा हूं। मैं एक मामले को छोड़कर सभी मामलों को कवर करने में सक्षम हूं जिसमें एक डोमेन लाइसेंस true
में is_valid
xml नोड को वापस करना चाहिए।
REST एपीआई इतनी सुरक्षित है कि यह आईपी से अनुरोध स्वीकार नहीं करता जो कि उनके श्वेतसूची में सूचीबद्ध नहीं हैं। और अगर कोई गैर-श्वेतसूची वाले आईपी से अनुरोध कर रहा है तो एपीआई एक गलत
मान is_valid
देता है (और यह है कि मैं इस मामले को false के लिए कवर कर रहा हूं
)
मुझे पता है कि यह एक नकली वस्तु का उपयोग करके किया जा सकता है लेकिन मुझे वाकई यकीन नहीं है कि एक नकली वस्तु कैसे लिखनी है, जिसमें वह मामला शामिल हो सकता है जहां एक डोमेन नाम मान्य है। क्या कोई मदद कर सकता है?
अग्रिम धन्यवाद
इस वर्ग की जांच करने के लिए, आप कर्फ :: पोस्ट कॉल का नकली होगा, लेकिन जब से इनलाइन किया जाता है, तो आपको नकली इस्तेमाल करने के लिए निर्भरता इंजेक्शन का उपयोग करने की आवश्यकता होती है।
कक्षा:
class ValidateLicense {निजी $ एसवीसी; // कन्स्ट्रक्टर इंजेक्शन, इंटिग्रेटेड सर्विसेज़ ऑब्जेक्ट यहां सार्वजनिक फ़ंक्शन __ कन्स्ट्रक्ट ($ सर्विस = नल) {अगर (! आईएसआईएनएलल ($ सर्विस)) {अगर {$ this- & gt; सेटसेट ($ सेवा); }}} फ़ंक्शन सेटसेवा (लाइसेंसएपीआई $ सेवा) {$ this- & gt; svc = $ सेवा} फ़ंक्शन वैलिड लायसेंस ($ डोमेन) {$ svc = $ this- & gt; svc; $ परिणाम = $ svc- & gt; इस्लाइसवैलिड ($ डोमेन); वापसी का परिणाम; }} वर्ग LicenseAPI {सार्वजनिक फ़ंक्शन IsLicenseValid ($ domain) {अगर (खाली ($ डोमेन)) {नया अपवाद फेंकना; } $ LicenseResponse = Curl :: पोस्ट (['होस्टनाम' = & gt; $ डोमेन]); $ Xml = नया XML (); $ XmlTree = $ Xml- & gt; XMLToTree ($ लाइसेंस रीस्पेंस); अगर ($ xmlTree ['is_valid'] == 'सच') {वापस सत्य; } विवरण झूठा है; }}
टेस्ट:
class ValidateLicenseTest PHPUnit_Framework_TestCase {// विस्तारित करता है डेटाप्रदाता को अलग-अलग वापसी मूल्यों को भेजने के लिए भी इस्तेमाल कर सकता है, और उसके बाद आशंकाओं के साथ जांचें। सार्वजनिक फ़ंक्शन testValidLicense () {// LicenseAPI वर्ग के लिए एक नकली बनाएँ, $ MockService = $ this- & gt; getMock ('LicenseAPI', सरणी ('IsLicenseValid')); // वापसी पद्धति $ MockService- & gt; उम्मीद की स्थापना सेट करें ($-- इस- & gt; कोई भी) - & gt; विधि ('isLicenseValid') - & gt; होगा ($ this- & gt; वापसी वैल्यू (सत्य)) ; // टेस्ट ऑब्जेक्ट बनाएं - सेवा के रूप में हमारी नकली दर दें $ TestClass = नया वैध लाइसेंस ($ मोकसेवायर); // या // $ टेस्ट क्लास = नए मान्य लायसेंस (); // $ टेस्ट क्लास-> सेट सर्विसेज ($ MockService); // टेस्ट $ डोमेन = "लोकलहोस्ट"; // नकली फ़ंक्शंस के साथ चेक किया जा सकता है $- यह- & gt; जोर देना ($ टेस्ट क्लास- & gt; वैल्यूडियेंस ($ डोमेन)); } // अलग रिटर्न वैल्यू भेजने के लिए डेटाप्राइवर का उपयोग भी कर सकता है, और फिर एसेट्स से जांच करें। सार्वजनिक फ़ंक्शन testInValidLicense () {// LicenseAPI वर्ग के लिए नकली बनाएं, $ MockService = $ this- & gt; getMock ('LicenseAPI', सरणी ('IsLicenseValid')); // वापसी पद्धति $ MockService- & gt; उम्मीद की स्थापना सेट करें ($-- इस- & gt; कोई भी) - & gt; विधि ('IsLicenseValid') - & gt; होगा ($-> यह- & gt; वापसी मूल्य (गलत)) ; // टेस्ट ऑब्जेक्ट बनाएं - सेवा के रूप में हमारी नकली दर दें $ TestClass = नया वैध लाइसेंस ($ मोकसेवायर); // या // $ टेस्ट क्लास = नए मान्य लायसेंस (); // $ टेस्ट क्लास-> सेट सर्विसेज ($ MockService); // टेस्ट $ डोमेन = "लोकलहोस्ट"; // नकली फ़ंक्शंस के साथ चेक किया जा सकता है $- यह- & gt; जोर दें झूठ ($ टेस्ट क्लास- & gt; वैलिड लायसेंस ($ डोमेन)); }}
Comments
Post a Comment