2012-03-13 122 views
1

我需要您的幫助來處理一個實際問題。我用兩個操作聯繫人創建了基本綁定的WCF服務。使用SoapUI測試WCF

1-無效StartRegistration - 匿名成員可以填寫基本註冊表單,然後按提交。所有的信息將被存儲到數據庫中,一個帶有隨機標記的鏈接將被髮送到用戶的電子郵件地址。 2 - void CompleteRegistration - 此方法驗證發送到電子郵件地址的令牌,如果令牌有效,用戶帳戶將被激活。

現在我在這裏有問題。使用SoapUI我可以調用StartRegistration方法。電子郵件發送到目的地,但我想將令牌傳遞給CompleteRegistration方法。

由於它是一個WCF服務,所以不能做依賴注入來傳遞SoapUI測試:)。

請幫忙。

回答

1

如果我正確理解你的問題,你有兩個WCF方法,一個用於創建一個令牌,另一個用於確認它。 在這種情況下我會做的是有第一種方法,StartRegistration,返回令牌。然後,您可以使用該令牌在Soap UI中輕鬆傳入CompleteRegistration方法。

另一個非常麻煩的解決方案是,在Soap UI中有一個實際連接到郵件帳戶的groovy腳本測試步驟,讀取鏈接並分析內容。

編輯:

下面是你需要的腳本的一部分。將它放在一個常規步驟中,然後將郵件中的令牌返回。

注意:此代碼假定郵件爲純文本,而不是多部分。它還假定郵箱只有一個郵件。 JavaMail的API非常廣泛,所以如果你想用它做任何魔術,谷歌是你的朋友:)至少,這是一個開始的地方。

import javax.mail.*; 
import javax.mail.internet.*; 

// setup connection 
Properties props = new Properties(); 
def host = "pop3.live.com"; 
def username = "[email protected]"; 
def password = "myPassword"; 
def provider = "pop3s"; 

// Connect to the POP3 server 
Session session = Session.getDefaultInstance props, null 
Store store = session.getStore provider 
Folder inbox = null 
String content 
try 
{ 
store.connect host, username, password 

// Open the folder 
inbox = store.getFolder 'INBOX' 
if (!inbox) { 
    println 'No INBOX' 
    System.exit 1 
} 

inbox.open(Folder.READ_ONLY) 

Message[] messages = inbox.getMessages() 
content = messages[0].getContent() 

//Do some parsing of the content here, to find your token. 
//Place the result in content 
} 
finally 
{ 
    inbox.close false 
    store.close() 
} 

return content; //return the parsed token 
+0

由於安全考慮,您建議的第一個解決方案並不合適。我們在服務中有非常安全的令牌算法,令牌不應該暴露給最終客戶端。 – Shailesh 2012-03-15 05:04:35

+0

我對第二種解決方案更感興趣。您可以請張貼一些Groovy腳本樣本。 Thanx幫助我。 – Shailesh 2012-03-15 05:05:18

+0

嗨! 我設法創建了一個閱讀郵件測試步驟,但這一切都取決於您的郵件是什麼樣子。你有一個例子嗎?此外,CompleteRegistration是否將令牌作爲參數? – 2012-03-15 09:52:54

相關問題