从js html喷涂测试basicauth

时间:2013-11-26 20:08:30

标签: scala spray

我的代码如下: https://gist.github.com/daaatz/7665224

但不知道如何测试请求。 尝试mydomain / secured?user = John& password = p4ssw0rd等但没有任何作用。

有人可以告诉我或在js + html中显示示例如何检查它是否正常工作?

由于

2 个答案:

答案 0 :(得分:4)

我从未在Spray中使用过BasicAuth,所以我不确定这是否是完整的答案,但我希望这会对你有帮助。

起初。在喷涂中,在akka testkit之上写了一个很棒的spray-testkit。您绝对应该在github上查看SecurityDirectives测试,这将向您展示如何测试基本身份验证。一个小例子,使这更简单:

至于你的路线示例,我最好编辑到以下一个:

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

添加get指令将指定此路由需要Get请求且sealRoute已过时,RejectionHandlerExceptionHandler隐式提供{{1} }}。如果你想检查异常/拒绝,它仅用于测试。

现在在测试中你应该构建auth实体,类似于测试实体:

runRoute

你测试案例:

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)" } } 中指定您的测试会在“/ security”上发送Get("security")请求,然后将Get添加到测试请求,某些操作和Authorization部分测试请求。

我从未尝试过测试BasicAuth,因此可能会出现一些错误。

答案 1 :(得分:0)

我会研究CURL来测试Web应用程序中的路由,但我也使用了chrome扩展Postman,但也有很好的结果。