Skip to content

Commit

Permalink
Simplify the specs that are really about parsing the XRDS documents
Browse files Browse the repository at this point in the history
  • Loading branch information
juretta committed Sep 7, 2012
1 parent 7751fe1 commit aa12804
Showing 1 changed file with 32 additions and 64 deletions.
Expand Up @@ -90,47 +90,45 @@ object DiscoverySpec extends Specification with Mockito {
val maybeOpenIdServer = new XrdsResolver().resolve(response)
maybeOpenIdServer.map(_.url) must beSome("https://www.google.com/accounts/o8/ud")
}
}

"Discovery" should {

"resolve an OpenID server via Yadis" in {
"with a single service element" in {
val ws = new WSMock
ws.response.xml returns scala.xml.XML.loadString(readFixture("discovery/xrds/simple-op.xml"))
ws.response.header(HeaderNames.CONTENT_TYPE) returns Some("application/xrds+xml")

val returnTo = "http://foo.bar.com/openid"
val openId = "http://abc.example.com/foo"
val redirectUrl = new OpenIDClient(ws.url).redirectURL(openId, returnTo).value.get

there was one(ws.request).get()

new URL(redirectUrl).hostAndPath must be equalTo "https://www.google.com/a/example.com/o8/ud"

verifyValidOpenIDRequest(parseQueryString(redirectUrl), openId, returnTo)
}
"parse an XRDS response with a single Service element" in {
response.xml returns scala.xml.XML.loadString(readFixture("discovery/xrds/simple-op.xml"))
val maybeOpenIdServer = new XrdsResolver().resolve(response)
maybeOpenIdServer.map(_.url) must beSome("https://www.google.com/a/example.com/o8/ud?be=o8")
}

"with multiple service elements" in {
val ws = new WSMock
ws.response.xml returns scala.xml.XML.loadString(readFixture("discovery/xrds/multi-service.xml"))
ws.response.header(HeaderNames.CONTENT_TYPE) returns Some("application/xrds+xml")
"parse an XRDS response with multiple Service elements" in {
response.xml returns scala.xml.XML.loadString(readFixture("discovery/xrds/multi-service.xml"))
val maybeOpenIdServer = new XrdsResolver().resolve(response)
maybeOpenIdServer.map(_.url) must beSome("http://www.myopenid.com/server")
}

val returnTo = "http://foo.bar.com/openid"
val openId = "http://abc.example.com/foo"
val redirectUrl = new OpenIDClient(ws.url).redirectURL(openId, returnTo).value.get
// See 7.3.2.2. Extracting Authentication Data
"return the OP Identifier over the Claimed Identifier if both are present" in {
response.xml returns scala.xml.XML.loadString(readFixture("discovery/xrds/multi-service-with-op-and-claimed-id-service.xml"))
val maybeOpenIdServer = new XrdsResolver().resolve(response)
maybeOpenIdServer.map(_.url) must beSome("http://openidprovider-opid.example.com")
}

there was one(ws.request).get()
"extract and use OpenID Authentication 1.0 service elements from XRDS documents, if Yadis succeeds on an URL Identifier." in {
response.xml returns scala.xml.XML.loadString(readFixture("discovery/xrds/simple-openid-1-op.xml"))
val maybeOpenIdServer = new XrdsResolver().resolve(response)
maybeOpenIdServer.map(_.url) must beSome("http://openidprovider-server-1.example.com")
}

new URL(redirectUrl).hostAndPath must be equalTo "http://www.myopenid.com/server"
"extract and use OpenID Authentication 1.1 service elements from XRDS documents, if Yadis succeeds on an URL Identifier." in {
response.xml returns scala.xml.XML.loadString(readFixture("discovery/xrds/simple-openid-1.1-op.xml"))
val maybeOpenIdServer = new XrdsResolver().resolve(response)
maybeOpenIdServer.map(_.url) must beSome("http://openidprovider-server-1.1.example.com")
}
}

verifyValidOpenIDRequest(parseQueryString(redirectUrl), openId, returnTo)
}
"OpenID.redirectURL" should {

// See 7.3.2.2. Extracting Authentication Data
"returning the OP Identifier over the Claimed Identifier if both are present" in {
"resolve an OpenID server via Yadis" in {
"with a single service element" in {
val ws = new WSMock
ws.response.xml returns scala.xml.XML.loadString(readFixture("discovery/xrds/multi-service-with-op-and-claimed-id-service.xml"))
ws.response.xml returns scala.xml.XML.loadString(readFixture("discovery/xrds/simple-op.xml"))
ws.response.header(HeaderNames.CONTENT_TYPE) returns Some("application/xrds+xml")

val returnTo = "http://foo.bar.com/openid"
Expand All @@ -139,7 +137,7 @@ object DiscoverySpec extends Specification with Mockito {

there was one(ws.request).get()

new URL(redirectUrl).hostAndPath must be equalTo "http://openidprovider-opid.example.com"
new URL(redirectUrl).hostAndPath must be equalTo "https://www.google.com/a/example.com/o8/ud"

verifyValidOpenIDRequest(parseQueryString(redirectUrl), openId, returnTo)
}
Expand Down Expand Up @@ -180,36 +178,6 @@ object DiscoverySpec extends Specification with Mockito {

verifyValidOpenIDRequest(parseQueryString(redirectUrl), openId, returnTo)
}

"Relying Parties SHOULD extract and use OpenID Authentication 1.0 service elements from XRDS documents, if Yadis succeeds on an URL Identifier." in {
val ws = new WSMock
ws.response.xml returns scala.xml.XML.loadString(readFixture("discovery/xrds/simple-openid-1-op.xml"))
ws.response.header(HeaderNames.CONTENT_TYPE) returns Some("application/xrds+xml")

val returnTo = "http://foo.bar.com/openid"
val openId = "http://abc.example.com/foo"
val redirectUrl = new OpenIDClient(ws.url).redirectURL(openId, returnTo).value.get

there was one(ws.request).get()
new URL(redirectUrl).hostAndPath must be equalTo "http://openidprovider-server-1.example.com"

verifyValidOpenIDRequest(parseQueryString(redirectUrl), openId, returnTo)
}

"Relying Parties SHOULD extract and use OpenID Authentication 1.1 service elements from XRDS documents, if Yadis succeeds on an URL Identifier." in {
val ws = new WSMock
ws.response.xml returns scala.xml.XML.loadString(readFixture("discovery/xrds/simple-openid-1.1-op.xml"))
ws.response.header(HeaderNames.CONTENT_TYPE) returns Some("application/xrds+xml")

val returnTo = "http://foo.bar.com/openid"
val openId = "http://abc.example.com/foo"
val redirectUrl = new OpenIDClient(ws.url).redirectURL(openId, returnTo).value.get

there was one(ws.request).get()
new URL(redirectUrl).hostAndPath must be equalTo "http://openidprovider-server-1.1.example.com"

verifyValidOpenIDRequest(parseQueryString(redirectUrl), openId, returnTo)
}
}

"resolve an OpenID server via HTML" in {
Expand Down

0 comments on commit aa12804

Please sign in to comment.