Skip to content

Commit

Permalink
Merge 04d8cb3 into 7c893a7
Browse files Browse the repository at this point in the history
  • Loading branch information
musketyr committed Nov 9, 2021
2 parents 7c893a7 + 04d8cb3 commit 88206fe
Show file tree
Hide file tree
Showing 3 changed files with 121 additions and 2 deletions.
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,8 @@ projects {

// location independent tests (useful for stable CI builds)
tasks.withType(Test){
useJUnitPlatform()

systemProperty 'user.timezone', 'UTC'
systemProperty 'user.language', 'en'
}
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ gitPublishPluginVersion=2.1.3
nexusPluginVersion=1.0.0

groovyVersion=2.5.14
spockVersion=1.3-groovy-2.5
spockVersion=2.0-groovy-2.5
micronautVersion=1.3.7
restfbVersion=3.17.0
gruVersion=0.9.2
gruVersion=0.9.4
micronautGrailsVersion=3.0.3
ersatzVersion=1.9.0
fixtVersion=0.2.1.1
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package com.agorapulse.micronaut.facebooksdk.fsr

import com.agorapulse.gru.Gru
import com.agorapulse.gru.http.Http
import com.agorapulse.micronaut.facebooksdk.FacebookApplication
import groovy.transform.CompileDynamic
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import io.micronaut.context.annotation.Property
import io.micronaut.context.annotation.Requires
import io.micronaut.context.env.Environment
import io.micronaut.http.MediaType
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Post
import io.micronaut.http.annotation.Body
import io.micronaut.http.annotation.Produces
import io.micronaut.http.annotation.Consumes
import io.micronaut.runtime.server.EmbeddedServer
import io.micronaut.test.annotation.MicronautTest
import spock.lang.AutoClenaup
import spock.lang.Specification

import javax.annotation.Nullable
import javax.inject.Inject

@MicronautTest
@CompileDynamic
@Property(name = 'facebook.sdk.app.id', value = '1234567890')
@Property(name = 'facebook.sdk.app.secret', value = 'secret')
class FacebookSignedRequestBinderSpec extends Specification {

@Inject
EmbeddedServer server

@Inject
FacebookApplication application

@AutoCleanup
Gru gru = Gru.equip(Http.steal(this))

void setup() {
gru.prepare(server.URL.toExternalForm())
}

void 'application exists'() {
expect:
application
}

void 'anonymous access'() {
expect:
gru.test {
post '/test/fbsr'
expect {
text inline('nothing')
}
}
}

void 'access with parameter'() {
expect:
gru.test {
post '/test/fbsr', {
params signed_request: FacebookSignedRequestSpec.TEST_REQUEST.generate('secret')
}
expect {
text inline(FacebookSignedRequestSpec.TEST_REQUEST.userId.toString())
}
}
}

void 'access with cookie'() {
given:
final String COOKIE_NAME = 'fbsr_1234567890'
expect:
gru.test {
post '/test/fbsr', {
cookie COOKIE_NAME, FacebookSignedRequestSpec.TEST_REQUEST.generate('secret')
}
expect {
text inline(FacebookSignedRequestSpec.TEST_REQUEST.userId.toString())
}
}
}

}

@CompileStatic
class SignedRequestBody {

String signedRequest

@Override
String toString() {
return "SignedRequestBody{signedRequest='$signedRequest'}"
}

}

@Slf4j
@CompileStatic
@Requires(env = Environment.TEST)
@Controller('/test')
class TestController {

@Post('/fbsr')
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
String testFacebookSignedRequest(@Nullable FacebookSignedRequest request, @Nullable @Body SignedRequestBody body) {
log.info('body can be still injected: ' + body)
if (!request) {
return 'nothing'
}
return request.userId
}

}

0 comments on commit 88206fe

Please sign in to comment.