Skip to content

Commit d737b49

Browse files
authored
make snapshot description properly optional (#1373)
1 parent 3ce32bb commit d737b49

File tree

6 files changed

+18
-14
lines changed

6 files changed

+18
-14
lines changed

core/src/main/scala/org/broadinstitute/dsde/rawls/dataaccess/workspacemanager/HttpWorkspaceManagerDAO.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,11 @@ class HttpWorkspaceManagerDAO(baseWorkspaceManagerUrl: String)(implicit val syst
3838
getWorkspaceApi(accessToken).deleteWorkspace(workspaceId)
3939
}
4040

41-
override def createDataReference(workspaceId: UUID, name: DataReferenceName, description: DataReferenceDescriptionField, referenceType: ReferenceTypeEnum, reference: DataRepoSnapshot, cloningInstructions: CloningInstructionsEnum, accessToken: OAuth2BearerToken): DataReferenceDescription = {
42-
getWorkspaceApi(accessToken).createDataReference(new CreateDataReferenceRequestBody().name(name.value).description(description.value).referenceType(referenceType).reference(reference).cloningInstructions(cloningInstructions), workspaceId)
41+
override def createDataReference(workspaceId: UUID, name: DataReferenceName, description: Option[DataReferenceDescriptionField], referenceType: ReferenceTypeEnum, reference: DataRepoSnapshot, cloningInstructions: CloningInstructionsEnum, accessToken: OAuth2BearerToken): DataReferenceDescription = {
42+
val request = new CreateDataReferenceRequestBody().name(name.value).referenceType(referenceType).reference(reference).cloningInstructions(cloningInstructions)
43+
description.map(d => request.description(d.value))
44+
45+
getWorkspaceApi(accessToken).createDataReference(request, workspaceId)
4346
}
4447

4548
override def updateDataReference(workspaceId: UUID, referenceId: UUID, updateInfo: UpdateDataReferenceRequestBody, accessToken: OAuth2BearerToken): Unit = {

core/src/main/scala/org/broadinstitute/dsde/rawls/dataaccess/workspacemanager/WorkspaceManagerDAO.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ trait WorkspaceManagerDAO {
1313
def getWorkspace(workspaceId: UUID, accessToken: OAuth2BearerToken): WorkspaceDescription
1414
def createWorkspace(workspaceId: UUID, accessToken: OAuth2BearerToken): CreatedWorkspace
1515
def deleteWorkspace(workspaceId: UUID, accessToken: OAuth2BearerToken): Unit
16-
def createDataReference(workspaceId: UUID, name: DataReferenceName, description: DataReferenceDescriptionField, referenceType: ReferenceTypeEnum, reference: DataRepoSnapshot, cloningInstructions: CloningInstructionsEnum, accessToken: OAuth2BearerToken): DataReferenceDescription
16+
def createDataReference(workspaceId: UUID, name: DataReferenceName, description: Option[DataReferenceDescriptionField], referenceType: ReferenceTypeEnum, reference: DataRepoSnapshot, cloningInstructions: CloningInstructionsEnum, accessToken: OAuth2BearerToken): DataReferenceDescription
1717
def updateDataReference(workspaceId: UUID, referenceId: UUID, updateInfo: UpdateDataReferenceRequestBody, accessToken: OAuth2BearerToken): Unit
1818
def deleteDataReference(workspaceId: UUID, referenceId: UUID, accessToken: OAuth2BearerToken): Unit
1919
def getDataReference(workspaceId: UUID, referenceId: UUID, accessToken: OAuth2BearerToken): DataReferenceDescription

core/src/test/scala/org/broadinstitute/dsde/rawls/jobexec/SubmissionSpec.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1120,7 +1120,7 @@ class SubmissionSpec(_system: ActorSystem) extends TestKit(_system)
11201120
when(dataRepoDAO.getInstanceName).thenReturn("dataRepoInstance")
11211121

11221122
val dataReferenceName = DataReferenceName("dataref")
1123-
val dataReferenceDescription = DataReferenceDescriptionField("description")
1123+
val dataReferenceDescription = Option(DataReferenceDescriptionField("description"))
11241124

11251125
val methodConfig = MethodConfiguration("dsde", "DataRepoMethodConfig", Some(tableName), prerequisites = None, inputs = Map("three_step.cgrep.pattern" -> AttributeString(s"this.$columnName")), outputs = Map.empty, AgoraMethod("dsde", "three_step", 1), dataReferenceName = Option(dataReferenceName))
11261126

core/src/test/scala/org/broadinstitute/dsde/rawls/mock/MockWorkspaceManagerDAO.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,13 @@ class MockWorkspaceManagerDAO extends WorkspaceManagerDAO {
3030

3131
override def deleteWorkspace(workspaceId: UUID, accessToken: OAuth2BearerToken): Unit = ()
3232

33-
override def createDataReference(workspaceId: UUID, name: DataReferenceName, description: DataReferenceDescriptionField, referenceType: ReferenceTypeEnum, reference: DataRepoSnapshot, cloningInstructions: CloningInstructionsEnum, accessToken: OAuth2BearerToken): DataReferenceDescription = {
33+
override def createDataReference(workspaceId: UUID, name: DataReferenceName, description: Option[DataReferenceDescriptionField], referenceType: ReferenceTypeEnum, reference: DataRepoSnapshot, cloningInstructions: CloningInstructionsEnum, accessToken: OAuth2BearerToken): DataReferenceDescription = {
3434
if(reference.toString.contains("fakesnapshot"))
3535
throw new RawlsExceptionWithErrorReport(ErrorReport(StatusCodes.NotFound, "Not found"))
3636
else {
3737
val newId = UUID.randomUUID()
38-
val ref = new DataReferenceDescription().referenceId(newId).name(name.value).description(description.value).workspaceId(workspaceId).referenceType(referenceType).reference(reference).cloningInstructions(CloningInstructionsEnum.NOTHING)
38+
val ref = new DataReferenceDescription().referenceId(newId).name(name.value).workspaceId(workspaceId).referenceType(referenceType).reference(reference).cloningInstructions(CloningInstructionsEnum.NOTHING)
39+
description.map(d => ref.description(d.value))
3940
references.put((workspaceId, newId), ref)
4041
mockReferenceResponse(workspaceId, newId)
4142
}

core/src/test/scala/org/broadinstitute/dsde/rawls/webservice/SnapshotApiServiceSpec.scala

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import akka.http.scaladsl.model.StatusCodes
55
import akka.http.scaladsl.model.headers.OAuth2BearerToken
66
import akka.http.scaladsl.server.Route.{seal => sealRoute}
77
import bio.terra.workspace.client.ApiException
8-
import bio.terra.workspace.model.{CloningInstructionsEnum, DataReferenceDescription, DataReferenceList, DataRepoSnapshot, ReferenceTypeEnum, UpdateDataReferenceRequestBody}
8+
import bio.terra.workspace.model._
99
import org.broadinstitute.dsde.rawls.dataaccess.{MockGoogleServicesDAO, SlickDataSource}
1010
import org.broadinstitute.dsde.rawls.google.MockGooglePubSubDAO
1111
import org.broadinstitute.dsde.rawls.mock.{MockSamDAO, MockWorkspaceManagerDAO}
1212
import org.broadinstitute.dsde.rawls.model.DataReferenceModelJsonSupport._
13-
import org.broadinstitute.dsde.rawls.model.{DataReferenceDescriptionField, DataReferenceName, ErrorReport, NamedDataRepoSnapshot, SamResourceAction, SamResourceTypeName, SamWorkspaceActions, UserInfo}
13+
import org.broadinstitute.dsde.rawls.model._
1414
import org.broadinstitute.dsde.rawls.openam.MockUserInfoDirectives
1515

1616
import scala.collection.JavaConverters._
@@ -22,7 +22,7 @@ class SnapshotApiServiceSpec extends ApiServiceSpec {
2222

2323
val defaultNamedSnapshotJson = httpJson(NamedDataRepoSnapshot(
2424
name = DataReferenceName("foo"),
25-
description = DataReferenceDescriptionField("bar"),
25+
description = Option(DataReferenceDescriptionField("bar")),
2626
snapshotId = "realsnapshot"
2727
))
2828
val defaultSnapshotUpdateBodyJson = httpJson(new UpdateDataReferenceRequestBody().name("foo2").description("bar2"))
@@ -110,7 +110,7 @@ class SnapshotApiServiceSpec extends ApiServiceSpec {
110110
Post(baseSnapshotsPath, httpJson(
111111
NamedDataRepoSnapshot(
112112
name = DataReferenceName("foo"),
113-
description = DataReferenceDescriptionField("bar"),
113+
description = Option(DataReferenceDescriptionField("bar")),
114114
snapshotId = "fakesnapshot"
115115
)
116116
)) ~>
@@ -221,7 +221,7 @@ class SnapshotApiServiceSpec extends ApiServiceSpec {
221221
Post(baseSnapshotsPath, httpJson(
222222
NamedDataRepoSnapshot(
223223
name = DataReferenceName("bar"),
224-
description = DataReferenceDescriptionField("bar"),
224+
description = Option(DataReferenceDescriptionField("bar")),
225225
snapshotId = "realsnapshot2"
226226
)
227227
)) ~>
@@ -327,7 +327,7 @@ class SnapshotApiServiceSpec extends ApiServiceSpec {
327327

328328
it should "return 404 when a user tries to update a snapshot from a workspace that they don't have access to" in withTestDataApiServicesAndUser("no-access") { services =>
329329
val dataReference = new DataRepoSnapshot().instanceName("foo").snapshot("bar")
330-
val id = services.workspaceManagerDAO.createDataReference(UUID.fromString(testData.workspace.workspaceId), DataReferenceName("test"), DataReferenceDescriptionField("description"), ReferenceTypeEnum.DATA_REPO_SNAPSHOT, dataReference, CloningInstructionsEnum.NOTHING, OAuth2BearerToken("foo")).getReferenceId
330+
val id = services.workspaceManagerDAO.createDataReference(UUID.fromString(testData.workspace.workspaceId), DataReferenceName("test"), Option(DataReferenceDescriptionField("description")), ReferenceTypeEnum.DATA_REPO_SNAPSHOT, dataReference, CloningInstructionsEnum.NOTHING, OAuth2BearerToken("foo")).getReferenceId
331331
Patch(s"${baseSnapshotsPath}/${id.toString}", defaultSnapshotUpdateBodyJson) ~>
332332
sealRoute(services.snapshotRoutes) ~>
333333
check { assertResult(StatusCodes.NotFound) {status} }
@@ -374,7 +374,7 @@ class SnapshotApiServiceSpec extends ApiServiceSpec {
374374

375375
it should "return 404 when a user tries to delete a snapshot from a workspace that they don't have access to" in withTestDataApiServicesAndUser("no-access") { services =>
376376
val dataReference = new DataRepoSnapshot().instanceName("foo").snapshot("bar")
377-
val id = services.workspaceManagerDAO.createDataReference(UUID.fromString(testData.workspace.workspaceId), DataReferenceName("test"), DataReferenceDescriptionField("description"), ReferenceTypeEnum.DATA_REPO_SNAPSHOT, dataReference, CloningInstructionsEnum.NOTHING, OAuth2BearerToken("foo")).getReferenceId
377+
val id = services.workspaceManagerDAO.createDataReference(UUID.fromString(testData.workspace.workspaceId), DataReferenceName("test"), Option(DataReferenceDescriptionField("description")), ReferenceTypeEnum.DATA_REPO_SNAPSHOT, dataReference, CloningInstructionsEnum.NOTHING, OAuth2BearerToken("foo")).getReferenceId
378378
Delete(s"${baseSnapshotsPath}/${id.toString}") ~>
379379
sealRoute(services.snapshotRoutes) ~>
380380
check { assertResult(StatusCodes.NotFound) {status} }

model/src/main/scala/org/broadinstitute/dsde/rawls/model/DataReferenceModel.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import scala.collection.JavaConverters._
1111

1212
case class DataReferenceName(value: String) extends ValueObject
1313
case class DataReferenceDescriptionField(value: String = "") extends ValueObject
14-
case class NamedDataRepoSnapshot(name: DataReferenceName, description: DataReferenceDescriptionField, snapshotId: String)
14+
case class NamedDataRepoSnapshot(name: DataReferenceName, description: Option[DataReferenceDescriptionField], snapshotId: String)
1515

1616
object DataReferenceModelJsonSupport extends JsonSupport {
1717
def stringOrNull(in: Any): JsValue = Option(in) match {

0 commit comments

Comments
 (0)