2012-03-13 3 views
1

Мне нужна ваша помощь по одной практической проблеме. Я создал службу WCF с базовым связыванием с двумя операционными контактами.Тестирование WCF с помощью SoapUI

1- void StartRegistration - Анонимный участник может заполнить основную регистрационную форму и нажать кнопку «Отправить». Вся информация будет сохранена в базе данных, и одна ссылка с некоторым случайным токеном будет отправлена ​​на адрес электронной почты пользователя. 2 - void CompleteRegistration - этот метод проверяет токен, отправленный на адрес электронной почты, и если токен действителен, учетная запись пользователя будет активирована.

Теперь у меня проблема. Используя SoapUI, я могу вызвать метод StartRegistration. Электронная почта отправляется в пункт назначения, но я хочу передать токен методу CompleteRegistration.

Поскольку это служба WCF, так что не можете делать инъекции зависимостей для прохождения тестов SoapUI :).

Пожалуйста, помогите.

ответ

1

Если я правильно понимаю ваш вопрос, у вас есть два метода WCF, один для создания токена, а другой для подтверждения. Что бы я сделал в этом случае, это первый метод, StartRegistration, вернуть токен. Затем вы можете использовать этот токен, чтобы легко пройти в метод CompleteRegistration в мыльном интерфейсе.

Другим, довольно беспорядочным решением было бы провести тестовый шаг скрипта в пользовательском интерфейсе Soap, который фактически подключался к учетной записи электронной почты, читал ссылку и разбирал содержимое.

Отредактировано:

Вот часть сценария вам нужно. Поместите его в шаткий шаг, который затем вернет токен из вашей почты.

Примечание: этот код предполагает, что почта является обычным текстом, а не множественным. Он также предполагает, что почтовый ящик имеет только одну почту. API для JavaMail довольно обширен, поэтому, если вы хотите сделать с ним какую-либо магию, Google - ваш друг :) По крайней мере, это где-то начать.

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

+0

Меня больше интересует второе решение. Можете ли вы разместить несколько примеров скриптов Groovy. Спасибо за помощь. – Shailesh

+0

Привет! Мне удалось создать шаг проверки почты, но все зависит от того, как выглядят ваши письма. У вас есть пример? Кроме того, делает ли CompleteRegistration маркер в качестве параметра? –

Смежные вопросы