-
-
Notifications
You must be signed in to change notification settings - Fork 468
Expand file tree
/
Copy pathPersonSystemTest.kt
More file actions
109 lines (94 loc) · 3.55 KB
/
PersonSystemTest.kt
File metadata and controls
109 lines (94 loc) · 3.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package io.sentry.systemtest
import io.sentry.protocol.FeatureFlag
import io.sentry.protocol.SentryId
import io.sentry.systemtest.util.TestHelper
import kotlin.test.Test
import kotlin.test.assertEquals
import org.junit.Before
class PersonSystemTest {
lateinit var testHelper: TestHelper
@Before
fun setup() {
testHelper = TestHelper("http://localhost:8080")
testHelper.reset()
}
@Test
fun `get person fails`() {
val restClient = testHelper.restClient
restClient.getPerson(1L)
assertEquals(500, restClient.lastKnownStatusCode)
testHelper.ensureErrorReceived { event ->
event.message?.formatted == "Trying person with id=1" &&
testHelper.doesEventHaveFlag(event, "my-feature-flag", true)
}
testHelper.ensureErrorReceived { event ->
testHelper.doesEventHaveExceptionMessage(event, "Something went wrong [id=1]") &&
testHelper.doesEventHaveFlag(event, "my-feature-flag", true)
}
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
testHelper.doesTransactionHave(
transaction,
op = "http.server",
featureFlag = FeatureFlag("flag.evaluation.transaction-feature-flag", true),
) &&
testHelper.doesTransactionHaveSpanWith(
transaction,
op = "spanCreatedThroughSentryApi",
featureFlag = FeatureFlag("flag.evaluation.my-feature-flag", true),
)
}
Thread.sleep(10000)
testHelper.ensureLogsReceived { logs, envelopeHeader ->
testHelper.doesContainLogWithBody(logs, "warn Sentry logging") &&
testHelper.doesContainLogWithBody(logs, "error Sentry logging") &&
testHelper.doesContainLogWithBody(logs, "hello there world!") &&
testHelper.doesLogWithBodyHaveAttribute(
logs,
"warn Sentry logging",
"user.type",
"admin",
) &&
testHelper.doesLogWithBodyHaveAttribute(
logs,
"warn Sentry logging",
"feature.version",
2,
) &&
testHelper.doesLogWithBodyHaveAttribute(logs, "warn Sentry logging", "debug.enabled", true)
}
}
@Test
fun `create person works`() {
val restClient = testHelper.restClient
val person = Person("firstA", "lastB")
val returnedPerson = restClient.createPerson(person)
assertEquals(200, restClient.lastKnownStatusCode)
assertEquals(person.firstName, returnedPerson!!.firstName)
assertEquals(person.lastName, returnedPerson!!.lastName)
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
testHelper.doesTransactionContainSpanWithOp(transaction, "PersonService.create") &&
testHelper.doesTransactionContainSpanWithOpAndDescription(
transaction,
"db.query",
"insert into person (firstName, lastName) values (?, ?)",
)
}
}
@Test
fun `create person starts a profile linked to the transaction`() {
var profilerId: SentryId? = null
val restClient = testHelper.restClient
val person = Person("firstA", "lastB")
val returnedPerson = restClient.createPerson(person)
assertEquals(200, restClient.lastKnownStatusCode)
assertEquals(person.firstName, returnedPerson!!.firstName)
assertEquals(person.lastName, returnedPerson!!.lastName)
testHelper.ensureTransactionReceived { transaction, envelopeHeader ->
profilerId = transaction.contexts.profile?.profilerId
transaction.transaction == "POST /person/"
}
testHelper.ensureProfileChunkReceived { profileChunk, envelopeHeader ->
profileChunk.profilerId == profilerId
}
}
}