Тестирование WCF с SoapUI

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

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

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

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

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


person Shailesh    schedule 13.03.2012    source источник


Ответы (1)


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

Другим, довольно запутанным решением было бы иметь отличный тестовый шаг сценария в пользовательском интерфейсе 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
person Per Åkerberg    schedule 14.03.2012
comment
Первое решение, которое вы предложили, не подходит из соображений безопасности. У нас есть очень безопасный алгоритм токена в службе, и токен не должен быть доступен конечному клиенту. - person Shailesh; 15.03.2012
comment
Меня больше интересует второе решение. Не могли бы вы опубликовать пример скрипта Groovy. Спасибо за помощь. - person Shailesh; 15.03.2012
comment
Привет! Мне удалось создать шаг проверки чтения почты, но все зависит от того, как выглядят ваши письма. У вас есть пример? Кроме того, принимает ли CompleteRegistration токен в качестве параметра? - person Per Åkerberg; 15.03.2012
comment
Это чистый и простой формат HTML для всех шаблонов электронной почты. Это правильно, CompleteRegistration принимает токен в качестве параметра. Не могли бы вы хотя бы поделиться кодом Groovy, который это делает. - person Shailesh; 15.03.2012
comment
Я хочу попробовать предложенное вами решение. Я отмечу этот ответ после реализации в реальном времени. Концептуально мне кажется нормально. - person Shailesh; 16.03.2012