Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[branch sc46794] Upgrade to Spock 2 #8

Merged
merged 3 commits into from
Nov 9, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
}

}