Skip to content

Commit b794d84

Browse files
committed
Bump Misk & add audit client
Misk 2025.04.01.184033-1915641
1 parent 414f675 commit b794d84

File tree

11 files changed

+59
-11
lines changed

11 files changed

+59
-11
lines changed

gradle/libs.versions.toml

+1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ kotlinxHtml = { module = "org.jetbrains.kotlinx:kotlinx-html-jvm", version = "0.
7171
misk = { module = "com.squareup.misk:misk", version.ref = "misk" }
7272
miskActions = { module = "com.squareup.misk:misk-actions", version.ref = "misk" }
7373
miskAdmin = { module = "com.squareup.misk:misk-admin", version.ref = "misk" }
74+
miskAuditClient = { module = "com.squareup.misk:misk-audit-client", version.ref = "misk" }
7475
miskAwsDynamodb = { module = "com.squareup.misk:misk-aws-dynamodb", version.ref = "misk" }
7576
miskAws2Dynamodb = { module = "com.squareup.misk:misk-aws2-dynamodb", version.ref = "misk" }
7677
miskCore = { module = "com.squareup.misk:misk-core", version.ref = "misk" }

service-self-backfill/src/test/kotlin/app/cash/backfila/service/selfbackfill/SelfBackfillTestingModule.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ class SelfBackfillTestingModule : KAbstractModule() {
5050
slack = null,
5151
)
5252
newMultibinder<BackfillRunListener>()
53-
.addBinding()
54-
.to(SlackHelper::class.java)
53+
multibind<BackfillRunListener>().to<SlackHelper>()
54+
5555
bind<BackfilaConfig>().toInstance(config)
5656
install(DeploymentModule(TESTING))
5757
install(LogCollectorModule())

service/build.gradle.kts

+2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ dependencies {
4646
implementation(libs.misk)
4747
implementation(libs.miskActions)
4848
implementation(libs.miskAdmin)
49+
implementation(libs.miskAuditClient)
4950
implementation(libs.miskCore)
5051
implementation(libs.miskHibernate)
5152
implementation(libs.miskHotwire)
@@ -77,6 +78,7 @@ dependencies {
7778

7879
testImplementation(libs.miskTesting)
7980
testImplementation(libs.miskHibernateTesting)
81+
testImplementation(testFixtures(libs.miskAuditClient))
8082
testImplementation(libs.junitApi)
8183
testImplementation(libs.junitParams)
8284
testImplementation(libs.junitEngine)

service/src/main/kotlin/app/cash/backfila/dashboard/CreateBackfillAction.kt

+12-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package app.cash.backfila.dashboard
33
import app.cash.backfila.BackfillCreator
44
import app.cash.backfila.protos.service.CreateBackfillRequest
55
import app.cash.backfila.protos.service.CreateBackfillResponse
6+
import app.cash.backfila.ui.pages.BackfillShowAction
67
import javax.inject.Inject
78
import misk.MiskCaller
9+
import misk.audit.AuditClient
810
import misk.scope.ActionScoped
911
import misk.security.authz.Authenticated
1012
import misk.web.PathParam
@@ -16,8 +18,9 @@ import misk.web.actions.WebAction
1618
import misk.web.mediatype.MediaTypes
1719

1820
class CreateBackfillAction @Inject constructor(
19-
private val caller: @JvmSuppressWildcards ActionScoped<MiskCaller?>,
21+
private val callerProvider: @JvmSuppressWildcards ActionScoped<MiskCaller?>,
2022
private val backfillCreator: BackfillCreator,
23+
private val auditClient: AuditClient,
2124
) : WebAction {
2225
@Post("/services/{service}/variants/{variant}/create")
2326
@RequestContentType(MediaTypes.APPLICATION_JSON)
@@ -37,7 +40,14 @@ class CreateBackfillAction @Inject constructor(
3740
request: CreateBackfillRequest,
3841
): CreateBackfillResponse {
3942
// TODO check user has permissions for this service with access api
40-
val id = backfillCreator.create(caller.get()!!.user!!, service, variant, request)
43+
val id = backfillCreator.create(callerProvider.get()!!.user!!, service, variant, request)
44+
45+
auditClient.logEvent(
46+
target = request.backfill_name,
47+
description = "Backfill Created",
48+
applicationName = if (variant != "default") "$service/$variant" else service,
49+
detailURL = BackfillShowAction.path(id.id),
50+
)
4151

4252
return CreateBackfillResponse(id.id)
4353
}

service/src/main/kotlin/app/cash/backfila/service/BackfilaServiceModule.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ class BackfilaServiceModule(
4444
)
4545

4646
newMultibinder<BackfillRunListener>()
47-
.addBinding()
48-
.to(SlackHelper::class.java)
47+
multibind<BackfillRunListener>().to<SlackHelper>()
4948

5049
install(ConfigModule.create("backfila", config))
5150
install(BackfilaPersistenceModule(config))

service/src/main/kotlin/app/cash/backfila/ui/actions/BackfillCreateHandlerAction.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package app.cash.backfila.ui.actions
33
import app.cash.backfila.dashboard.CreateBackfillAction
44
import app.cash.backfila.protos.service.CreateBackfillRequest
55
import app.cash.backfila.ui.pages.BackfillCreateAction.BackfillCreateField
6+
import app.cash.backfila.ui.pages.BackfillShowAction
67
import javax.inject.Inject
78
import javax.inject.Singleton
89
import misk.scope.ActionScoped
@@ -63,9 +64,9 @@ class BackfillCreateHandlerAction @Inject constructor(
6364
val id = response.backfill_run_id
6465

6566
return Response(
66-
body = "go to /backfills/$id".toResponseBody(),
67+
body = "go to ${BackfillShowAction.path(id)}".toResponseBody(),
6768
statusCode = 303,
68-
headers = Headers.headersOf("Location", "/backfills/$id"),
69+
headers = Headers.headersOf("Location", BackfillShowAction.path(id)),
6970
)
7071
}
7172

service/src/test/kotlin/app/cash/backfila/BackfilaTestingModule.kt

+5-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import java.util.concurrent.Executors
2121
import javax.inject.Singleton
2222
import misk.MiskCaller
2323
import misk.MiskTestingServiceModule
24+
import misk.audit.FakeAuditClientModule
25+
import misk.config.AppNameModule
2426
import misk.environment.DeploymentModule
2527
import misk.hibernate.HibernateTestingModule
2628
import misk.inject.KAbstractModule
@@ -54,12 +56,13 @@ internal class BackfilaTestingModule : KAbstractModule() {
5456
bind<BackfilaConfig>().toInstance(config)
5557

5658
newMultibinder<BackfillRunListener>()
57-
.addBinding()
58-
.to(SlackHelper::class.java)
59+
multibind<BackfillRunListener>().to<SlackHelper>()
5960

6061
install(DeploymentModule(wisp.deployment.TESTING))
6162
install(LogCollectorModule())
6263
install(MiskTestingServiceModule())
64+
install(AppNameModule("backfila"))
65+
install(FakeAuditClientModule())
6366

6467
install(HibernateTestingModule(BackfilaDb::class))
6568
install(BackfilaPersistenceModule(config))

service/src/test/kotlin/app/cash/backfila/actions/CreateBackfillActionTest.kt

+26
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ import app.cash.backfila.service.persistence.RunPartitionQuery
2020
import app.cash.backfila.service.persistence.ServiceQuery
2121
import com.google.inject.Module
2222
import javax.inject.Inject
23+
import kotlin.test.assertEquals
2324
import kotlin.test.assertNotNull
25+
import misk.audit.FakeAuditClient
2426
import misk.exceptions.BadRequestException
2527
import misk.hibernate.Query
2628
import misk.hibernate.Transacter
@@ -58,6 +60,9 @@ class CreateBackfillActionTest {
5860
@Inject
5961
lateinit var fakeBackfilaClientServiceClient: FakeBackfilaCallbackConnector
6062

63+
@Inject
64+
lateinit var fakeAuditClient: FakeAuditClient
65+
6166
@Test
6267
fun serviceDoesntExist() {
6368
scope.fakeCaller(user = "molly") {
@@ -98,6 +103,8 @@ class CreateBackfillActionTest {
98103

99104
@Test
100105
fun created() {
106+
assertEquals(0, fakeAuditClient.sentEvents.size)
107+
101108
scope.fakeCaller(service = "deep-fryer") {
102109
configureServiceAction.configureService(
103110
ConfigureServiceRequest.Builder()
@@ -144,6 +151,25 @@ class CreateBackfillActionTest {
144151
assertThat(partitions[1].lease_token).isNull()
145152
assertThat(partitions[1].run_state).isEqualTo(BackfillState.PAUSED)
146153
}
154+
155+
assertEquals(1, fakeAuditClient.sentEvents.size)
156+
assertEquals(
157+
FakeAuditClient.FakeAuditEvent(
158+
eventSource = "backfila",
159+
eventTarget = "ChickenSandwich",
160+
timestampSent = 2147483647,
161+
applicationName = "deep-fryer",
162+
approverLDAP = "molly",
163+
automatedChange = false,
164+
description = "Backfill Created",
165+
richDescription = null,
166+
environment = "testing",
167+
detailURL = "/backfills/${response.backfill_run_id}",
168+
region = "us-west-2",
169+
requestorLDAP = "molly",
170+
),
171+
fakeAuditClient.sentEvents.single(),
172+
)
147173
}
148174
}
149175

service/src/test/kotlin/app/cash/backfila/development/BackfilaDevelopmentService.kt

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import app.cash.backfila.service.BackfilaServiceModule
1818
import app.cash.backfila.service.persistence.DbBackfillRun
1919
import misk.MiskApplication
2020
import misk.MiskRealServiceModule
21+
import misk.audit.NoOpAuditClientModule
2122
import misk.environment.DeploymentModule
2223
import misk.hibernate.Session
2324
import misk.inject.KAbstractModule
@@ -124,6 +125,7 @@ fun main(args: Array<String>) {
124125
DevelopmentAdminDashboardModule(),
125126
BackfilaDefaultEndpointConfigModule(),
126127
MiskRealServiceModule(),
128+
NoOpAuditClientModule(),
127129
).run(args)
128130
}
129131

service/src/test/kotlin/app/cash/backfila/development/finedining/FineDiningDevelopmentService.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import app.cash.backfila.development.DevelopmentAdminDashboardModule
77
import app.cash.backfila.development.ServiceHeaderInterceptor
88
import misk.MiskApplication
99
import misk.MiskRealServiceModule
10+
import misk.audit.NoOpAuditClientModule
1011
import misk.client.HttpClientEndpointConfig
1112
import misk.client.HttpClientsConfig
1213
import misk.client.HttpClientsConfigModule
@@ -57,7 +58,8 @@ fun main(args: Array<String>) {
5758
FineDiningServiceModule(),
5859
DevelopmentAdminDashboardModule(),
5960
MiskRealServiceModule(),
60-
).run(args)
61+
NoOpAuditClientModule(),
62+
).run(args)
6163
}
6264

6365
data class FineDiningConfig(

service/src/test/kotlin/app/cash/backfila/development/mcdees/McDeesDevelopmentServiceBase.kt

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import app.cash.backfila.development.DevelopmentAdminDashboardModule
66
import app.cash.backfila.development.ServiceHeaderInterceptor
77
import misk.MiskApplication
88
import misk.MiskRealServiceModule
9+
import misk.audit.NoOpAuditClientModule
910
import misk.client.HttpClientEndpointConfig
1011
import misk.client.HttpClientsConfig
1112
import misk.client.HttpClientsConfigModule
@@ -64,6 +65,7 @@ class McDeesDevelopmentServiceBase {
6465
),
6566
DevelopmentAdminDashboardModule(),
6667
MiskRealServiceModule(),
68+
NoOpAuditClientModule(),
6769
).run(args)
6870
}
6971

0 commit comments

Comments
 (0)