2013-11-26 6 views
0

У меня есть код, как: https://gist.github.com/daaatz/7665224спрей тестирования BasicAuth от JS HTML

, но не знаете, как проверить запрос. Попытка mydomain/secure? User = John & password = p4ssw0rd и т. Д., Но ничего не работает.

Может ли кто-нибудь сказать мне или показать пример в js + html, как проверить, работает ли он нормально?

Благодаря

+0

В дополнение к отличному ответу AlexIv вы должны прочитать, как работает базовая аутентификация HTTP. Он не использует параметры запроса, а HTTP-заголовки для аутентификации. Возможно, это то, чего вам не хватает. Чтобы попробовать это в браузере, используйте этот синтаксис: 'http: // user @ mydomain/secure'. Затем браузер должен указать вам пароль для ввода пароля. – jrudolph

ответ

0

Я хотел бы посмотреть на CURL для тестирования маршрутов в веб-приложениях, но я также использовал расширение хром Postman с отличными результатами, а также.

4

Я никогда не использовал BasicAuth in Spray, поэтому я не уверен, что это будет полный ответ, но я надеюсь, что это поможет вам.

Сначала. в спрее есть отличный spray-testkit, написанный на вершине akka testkit. Вы обязательно должны проверить тест SecurityDirectives на github, это покажет вам, как протестировать базовую аутентификацию. Небольшой пример, чтобы сделать это проще:

Что касается вашего примера маршрута, я бы лучше изменить к следующему:

val myRoute = 
    (path("secured") & get) { 
    authenticate(BasicAuth(myUserPassAuthenticator _, realm = "secure site")) {      
     userName => complete(s"The user is '$userName'") 
    } 
    } 
} 

Добавление get директивы будет указать, что этот маршрут ожидает Get запрос и sealRoute является устаревшая причина RejectionHandler и ExceptionHandler предоставляются неявно с runRoute. Он используется только в тестах, если вы хотите проверить исключения/отклонения.

Теперь в ваших тестах вы должны построить AUTH объекты, аналогичные испытания одного:

val challenge = `WWW-Authenticate`(HttpChallenge("Basic", "Realm")) 

val doAuth = BasicAuth(UserPassAuthenticator[BasicUserContext] { userPassOption ⇒ 
    Future.successful(Some(BasicUserContext(userPassOption.get.user))) 
}, "Realm") 

И проверить случай:

"simple auth test" in { 
    Get("security") ~> Authorization(BasicHttpCredentials("Alice", "")) ~> { 
    authenticate(doAuth) { echoComplete } 
    } ~> check { responseAs[String] === "BasicUserContext(Alice)" } 
} 

В Get("security") указывает, что ваш тест отправит Get запрос на "/ security", затем добавьте Authorization к запросу на тест, некоторое действие и часть check для проверки запроса.

Я никогда не пытался протестировать BasicAuth, поэтому могут быть некоторые ошибки.

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

  • Нет связанных вопросов^_^