Skip to content

Commit 5126e00

Browse files
committed
update get interface tests
1 parent 10060d3 commit 5126e00

10 files changed

Lines changed: 403 additions & 26 deletions

File tree

src/test/groovy/org/prebid/server/functional/model/request/auction/Device.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.prebid.server.functional.model.request.auction
22

3+
import groovy.transform.EqualsAndHashCode
34
import groovy.transform.ToString
45
import org.prebid.server.functional.util.PBSUtils
56

7+
@EqualsAndHashCode
68
@ToString(includeNames = true, ignoreNulls = true)
79
class Device {
810

src/test/groovy/org/prebid/server/functional/model/request/auction/DeviceExt.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package org.prebid.server.functional.model.request.auction
22

33
import com.fasterxml.jackson.annotation.JsonProperty
44
import com.fasterxml.jackson.annotation.JsonValue
5+
import groovy.transform.EqualsAndHashCode
56
import groovy.transform.ToString
67

8+
@EqualsAndHashCode
79
@ToString
810
class DeviceExt {
911

src/test/groovy/org/prebid/server/functional/model/request/auction/Imp.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ class Imp {
111111
].findAll { it }
112112
}
113113

114+
@JsonIgnore
114115
Object getSingleMediaTypeData() {
115116
return banner ?: video ?: nativeObj ?: audio
116117
}

src/test/groovy/org/prebid/server/functional/model/request/auction/PublicCountryIp.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.prebid.server.functional.model.request.auction
22

3+
import inet.ipaddr.IPAddressString
4+
35
enum PublicCountryIp {
46

57
USA_IP("209.232.44.21", "d646:2414:17b2:f371:9b62:f176:b4c0:51cd"),
@@ -14,4 +16,8 @@ enum PublicCountryIp {
1416
this.v4 = v4
1517
this.v6 = ipV6
1618
}
19+
20+
String getMaskedIPv6() {
21+
new IPAddressString(this.v6).toAddress().mask(new IPAddressString("::/64").toAddress().getNetworkMask()).toCanonicalString()
22+
}
1723
}

src/test/groovy/org/prebid/server/functional/model/request/auction/StoredAuctionResponse.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package org.prebid.server.functional.model.request.auction
22

33
import com.fasterxml.jackson.annotation.JsonProperty
4+
import groovy.transform.EqualsAndHashCode
45
import groovy.transform.ToString
56
import org.prebid.server.functional.model.response.auction.SeatBid
67

8+
@EqualsAndHashCode
79
@ToString(includeNames = true, ignoreNulls = true)
810
class StoredAuctionResponse {
911

src/test/groovy/org/prebid/server/functional/model/request/get/GeneralGetRequest.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ class GeneralGetRequest {
163163

164164
String targeting
165165

166+
@JsonProperty("tcfc")
166167
String consent
167168

168169
@JsonProperty("gdpr_consent")

src/test/groovy/org/prebid/server/functional/service/PrebidServerService.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import static java.time.ZoneOffset.UTC
4848
class PrebidServerService implements ObjectMapperWrapper {
4949

5050
static final String AUCTION_ENDPOINT = "/openrtb2/auction"
51-
static final String GENERAL_GET_ENDPOINT = "/openrtb2/auction"
51+
static final String GENERAL_GET_ENDPOINT = "/openrtb2/get"
5252
static final String AMP_ENDPOINT = "/openrtb2/amp"
5353
static final String COOKIE_SYNC_ENDPOINT = "/cookie_sync"
5454
static final String SET_UID_ENDPOINT = "/setuid"

src/test/groovy/org/prebid/server/functional/tests/GeneralGetInterfaceImpSpec.groovy

Lines changed: 246 additions & 22 deletions
Large diffs are not rendered by default.

src/test/groovy/org/prebid/server/functional/tests/GeneralGetInterfaceRequestSpec.groovy

Lines changed: 96 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import org.prebid.server.functional.model.request.auction.BidRequest
66
import org.prebid.server.functional.model.request.auction.Content
77
import org.prebid.server.functional.model.request.auction.DebugCondition
88
import org.prebid.server.functional.model.request.auction.Device
9+
import org.prebid.server.functional.model.request.auction.DeviceExt
910
import org.prebid.server.functional.model.request.auction.DeviceType
1011
import org.prebid.server.functional.model.request.auction.PublicCountryIp
12+
import org.prebid.server.functional.model.request.auction.StoredAuctionResponse
1113
import org.prebid.server.functional.model.request.get.GeneralGetRequest
1214
import org.prebid.server.functional.service.PrebidServerException
1315
import org.prebid.server.functional.util.PBSUtils
@@ -45,7 +47,7 @@ class GeneralGetInterfaceRequestSpec extends BaseSpec {
4547
]
4648
}
4749

48-
def "PBS should process bid request from default general get request "() {
50+
def "PBS should response with error when process bid request is not specified in general get request"() {
4951
given: "General get request without stored request param"
5052
def generalGetRequest = new GeneralGetRequest()
5153

@@ -736,6 +738,99 @@ class GeneralGetInterfaceRequestSpec extends BaseSpec {
736738
"True-Client-IP" | PBSUtils.getRandomEnum(PublicCountryIp).v6
737739
}
738740

741+
742+
def "PBS should use original values from stored request when it's not specified in get request"() {
743+
given: "Default General get request"
744+
def storedRequestId = PBSUtils.randomString
745+
def generalGetRequest = new GeneralGetRequest(storedRequestId: storedRequestId)
746+
747+
and: "Default stored request"
748+
def bidRequestDevice = new Device().tap {
749+
it.dnt = PBSUtils.randomNumber
750+
it.lmt = PBSUtils.randomNumber
751+
it.ip = PBSUtils.getRandomEnum(PublicCountryIp).v4
752+
it.ipv6 = PBSUtils.getRandomEnum(PublicCountryIp).maskedIPv6
753+
it.ua = PBSUtils.randomString
754+
it.devicetype = PBSUtils.getRandomEnum(DeviceType)
755+
it.ifa = PBSUtils.randomString
756+
it.ext = new DeviceExt(ifaType: PBSUtils.randomString)
757+
}
758+
759+
def request = BidRequest.getDefaultBidRequest().tap {
760+
it.tmax = PBSUtils.getRandomNumber(1000, 5000)
761+
it.bcat = [PBSUtils.randomString]
762+
it.badv = [PBSUtils.randomString]
763+
it.device = bidRequestDevice
764+
765+
it.ext.prebid.debug = PBSUtils.getRandomEnum(DebugCondition)
766+
it.ext.prebid.outputFormat = PBSUtils.randomString
767+
it.ext.prebid.outputModule = PBSUtils.randomString
768+
it.ext.prebid.storedAuctionResponse = new StoredAuctionResponse(id: PBSUtils.randomNumber)
769+
}
770+
771+
and: "Save storedRequest into DB"
772+
def storedRequest = StoredRequest.getStoredRequest(generalGetRequest.storedAuctionResponseId, request)
773+
storedRequestDao.save(storedRequest)
774+
775+
when: "PBS processes general get request"
776+
def response = defaultPbsService.sendGeneralGetRequest(generalGetRequest)
777+
778+
then: "Response should not contain errors and warnings"
779+
assert !response.ext?.errors
780+
assert !response.ext?.warnings
781+
782+
and: "Bidder request should contain device ip from headers"
783+
verifyAll(bidder.getBidderRequest(request.id)) {
784+
it.bcat == request.bcat
785+
it.badv == request.badv
786+
it.device == bidRequestDevice
787+
788+
it.ext.prebid.debug == request.ext.prebid.debug
789+
it.ext.prebid.outputFormat == request.ext.prebid.outputFormat
790+
it.ext.prebid.outputModule == request.ext.prebid.outputModule
791+
it.ext.prebid.storedAuctionResponse == request.ext.prebid.storedAuctionResponse
792+
}
793+
}
794+
795+
def "PBS should use original content values from stored #channel request when it's not specified in get request"() {
796+
given: "Default General get request"
797+
def storedRequestId = PBSUtils.randomString
798+
def generalGetRequest = new GeneralGetRequest(storedRequestId: storedRequestId)
799+
800+
and: "Default stored request"
801+
def content = Content.getDefaultContent().tap {
802+
it.genre = PBSUtils.randomString
803+
it.language = PBSUtils.randomString
804+
it.contentrating = PBSUtils.randomString
805+
it.cat = [PBSUtils.randomString]
806+
it.cattax = PBSUtils.randomNumber
807+
it.series = PBSUtils.randomString
808+
it.title = PBSUtils.randomString
809+
it.url = PBSUtils.randomString
810+
it.livestream = PBSUtils.randomNumber
811+
}
812+
def request = BidRequest.getDefaultBidRequest(channel).tap {
813+
it.getProperty(channel.value).content = content
814+
}
815+
816+
and: "Save storedRequest into DB"
817+
def storedRequest = StoredRequest.getStoredRequest(generalGetRequest.storedAuctionResponseId, request)
818+
storedRequestDao.save(storedRequest)
819+
820+
when: "PBS processes general get request"
821+
def response = defaultPbsService.sendGeneralGetRequest(generalGetRequest)
822+
823+
then: "Response should not contain errors and warnings"
824+
assert !response.ext?.errors
825+
assert !response.ext?.warnings
826+
827+
and: "Bidder request should contain device ip from headers"
828+
assert getRequestContent(bidder.getBidderRequest(request.id)) == content
829+
830+
where:
831+
channel << [SITE, APP, DOOH]
832+
}
833+
739834
static String getDeviceIp(Device device) {
740835
device.ip ?: device.ipv6
741836
}
@@ -746,11 +841,9 @@ class GeneralGetInterfaceRequestSpec extends BaseSpec {
746841
if (distributionChannels.contains(SITE)) {
747842
return bidderRequest.site.content
748843
}
749-
750844
if (distributionChannels.contains(APP)) {
751845
return bidderRequest.app.content
752846
}
753-
754847
return bidderRequest.dooh.content
755848
}
756849
}

src/test/groovy/org/prebid/server/functional/tests/privacy/GeneralGetInterfacePrivacySpec.groovy

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ import org.prebid.server.functional.model.config.PurposeConfig
55
import org.prebid.server.functional.model.db.StoredRequest
66
import org.prebid.server.functional.model.request.GppSectionId
77
import org.prebid.server.functional.model.request.auction.BidRequest
8+
import org.prebid.server.functional.model.request.auction.ConsentedProvidersSettings
9+
import org.prebid.server.functional.model.request.auction.Regs
10+
import org.prebid.server.functional.model.request.auction.RegsExt
11+
import org.prebid.server.functional.model.request.auction.User
12+
import org.prebid.server.functional.model.request.auction.UserExt
813
import org.prebid.server.functional.model.request.get.GeneralGetRequest
914
import org.prebid.server.functional.util.PBSUtils
1015
import org.prebid.server.functional.util.privacy.TcfConsent
@@ -496,4 +501,45 @@ class GeneralGetInterfacePrivacySpec extends PrivacyBaseSpec {
496501
def bidderRequest = bidder.getBidderRequest(request.id)
497502
assert bidderRequest.regs.gpc == gpc
498503
}
504+
505+
def "PBS should use original values from stored request when it's not specified in get request"() {
506+
given: "Default General get request"
507+
def storedRequestId = PBSUtils.randomString
508+
def generalGetRequest = new GeneralGetRequest(storedRequestId: storedRequestId)
509+
510+
and: "Default stored request"
511+
def userForRequest = User.defaultUser.tap {
512+
it.consent = PBSUtils.randomString
513+
it.ext = new UserExt(consentedProvidersSettings: new ConsentedProvidersSettings(consentedProviders: PBSUtils.randomString))
514+
}
515+
def regsForRequest = new Regs().tap {
516+
it.gdpr = 0 // for preventing bidder block
517+
it.gpp = PBSUtils.randomString
518+
it.usPrivacy = PBSUtils.randomString
519+
it.gppSid = [PBSUtils.randomNumber]
520+
it.ext = new RegsExt(gpc: PBSUtils.randomNumber)
521+
it.coppa = PBSUtils.randomNumber
522+
}
523+
def request = BidRequest.getDefaultBidRequest().tap {
524+
user = userForRequest
525+
regs = regsForRequest
526+
}
527+
528+
and: "Save storedRequest into DB"
529+
def storedRequest = StoredRequest.getStoredRequest(generalGetRequest.resolveStoredRequestId(), request)
530+
storedRequestDao.save(storedRequest)
531+
532+
when: "PBS processes general get request"
533+
def response = privacyPbsService.sendGeneralGetRequest(generalGetRequest)
534+
535+
then: "Response should not contain errors and warnings"
536+
assert !response.ext?.errors
537+
assert !response.ext?.warnings
538+
539+
and: "Bidder request should contain privacy data from original request"
540+
verifyAll (bidder.getBidderRequest(request.id)) {
541+
it.user == userForRequest
542+
it.regs == regsForRequest
543+
}
544+
}
499545
}

0 commit comments

Comments
 (0)