2012-10-09 9 views
6

में अनधिकृत करने के लिए Thread.CurrentPrincipal को रीसेट करने के लिए कैसे करें मेरे पास लाइब्रेरी कोड है जिसे एकाधिक क्लाइंट प्रकारों जैसे WinForms, Console, ASP.NET आदि से बुलाया जा सकता है ... और जिसे वर्तमान प्रिंसिपल को निर्धारित करने की आवश्यकता है।यूनिट टेस्ट

var currentUser = !System.Threading.Thread.CurrentPrincipal.Identity.IsAuthenticated ? null : System.Threading.Thread.CurrentPrincipal.Identity.Name; 
if (string.IsNullOrWhiteSpace(currentUser)) 
{ 
    currentUser = Environment.UserName; 
} 

एक कंसोल अनुप्रयोग Thread.CurrentPrincipal.Identity.IsAuthenticated में हमेशा गलत howerver MSTest में यह हमेशा एक है: इस प्रकार है ऐसा करने में मैं Thread.CurrentPrincipal की एक दो चरणों की जांच और उसके बाद Environment.UserName प्रदर्शन कर रहा हूँ मान्य प्रमाणीकृत उपयोगकर्ता।

क्या कंसोल ऐप की नकल करने के लिए अनधिकृत करने के लिए इकाई परीक्षण में थ्रेड.क्यूरेंट प्रिंसिपल के मान को रीसेट करने के लिए वैसे भी है?

उत्तर

11

तुम सब करने की ज़रूरत है:

Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(""), new string[0]); 
0

मैं नहीं बल्कि एक वर्ग है कि इसके समुचित इंटरफेस के साथ सभी CurrentPrincipal प्रबंधन को लागू करता है बना सकते हैं और है कि इंटरफ़ेस इंजेक्शन मिल जहां आप इसे की आवश्यकता होगी।

फिर आप उन्हें यूनिट परीक्षणों में नकल कर सकते हैं ताकि उन्हें सरल बना दिया जा सके।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^