Skip to content

Commit 943d384

Browse files
committed
adding import data test, changes to method config tests
1 parent 0675a1f commit 943d384

File tree

8 files changed

+146
-90
lines changed

8 files changed

+146
-90
lines changed
Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
1-
import org.broadinstitute.dsde.firecloud.pages.{WebBrowserSpec, WorkspaceListPage}
2-
import org.broadinstitute.dsde.firecloud.{Config, WebBrowserUtil}
1+
import org.broadinstitute.dsde.firecloud.pages.{WebBrowserSpec, WorkspaceDataPage}
2+
import org.broadinstitute.dsde.firecloud.{CleanUp, Config, WebBrowserUtil}
33
import org.scalatest.selenium.WebBrowser
44
import org.scalatest.{FlatSpec, ParallelTestExecution, ShouldMatchers}
55

6-
class DataTabSpec extends FlatSpec with WebBrowserSpec with ParallelTestExecution with ShouldMatchers with WebBrowser with WebBrowserUtil {
6+
class DataTabSpec extends FlatSpec with WebBrowserSpec with ParallelTestExecution with ShouldMatchers with WebBrowser with WebBrowserUtil with CleanUp {
77

88
behavior of "Data"
99

1010
it should "import a participants file" in withWebDriver { implicit driver =>
11-
signIn(Config.Accounts.testUserEmail, Config.Accounts.testUserPassword)
11+
val url = getClass.getResource("org/broadinstitute/dsde/firecloud/data/participants.txt")
1212

13-
val workspaceListPage = new WorkspaceListPage
14-
val workspaceName = "TestSpec_FireCloud_import_participants_file_" + randomUuid
15-
// replace this w/ workspace being created in the API?
16-
val workspaceSummaryTab = workspaceListPage.createWorkspace("broad-dsde-dev", workspaceName)
17-
val workspaceDataTab = workspaceSummaryTab.navigateToDataTab("broad-dsde-dev", workspaceName)
18-
//workspaceDataTab.import_file() ???
19-
workspaceSummaryTab.deleteWorkspace()
13+
val billingProject = "broad-dsde-dev"
14+
val wsName = "TestSpec_FireCloud_import_participants_file_" + randomUuid
15+
implicit val authToken = Config.AuthTokens.testFireC
16+
api.workspaces.create(billingProject, wsName)
17+
register cleanUp api.workspaces.delete(billingProject, wsName)
18+
19+
val workspaceListPage = signIn(Config.Accounts.testUserEmail, Config.Accounts.testUserPassword)
20+
val workspaceDataTab = new WorkspaceDataPage(billingProject, wsName).open
21+
workspaceDataTab.importFile(url.getPath)
22+
assert(workspaceDataTab.getNumberOfParticipants() == 1)
23+
//more checks should be added here
2024
}
2125
}

automation/src/test/scala/MethodConfigTabSpec.scala

Lines changed: 48 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import java.util.UUID
22

3-
import org.broadinstitute.dsde.firecloud.Config
4-
import org.broadinstitute.dsde.firecloud.api.Orchestration
53
import org.broadinstitute.dsde.firecloud.data.TestData
6-
import org.broadinstitute.dsde.firecloud.pages.{WebBrowserSpec, WorkspaceListPage, WorkspaceMethodConfigPage, WorkspaceSummaryPage}
4+
import org.broadinstitute.dsde.firecloud.pages.{WebBrowserSpec, WorkspaceListPage, WorkspaceMethodConfigPage}
5+
import org.broadinstitute.dsde.firecloud.{CleanUp, Config}
76
import org.scalatest._
87

9-
class MethodConfigTabSpec extends FreeSpec with WebBrowserSpec with BeforeAndAfterAll with BeforeAndAfterEach {
8+
class MethodConfigTabSpec extends FreeSpec with WebBrowserSpec with CleanUp {
109

11-
val wsNamespace = "broad-dsde-dev"
10+
val billingProject = "broad-dsde-dev"
1211
val methodConfigName = "test_method" + UUID.randomUUID().toString
1312
val wrongRootEntityErrorText = "Error: Method configuration expects an entity of type sample, but you gave us an entity of type participant."
1413
val noExpressionErrorText = "Error: Method configuration expects an entity of type sample, but you gave us an entity of type sample_set."
@@ -17,57 +16,52 @@ class MethodConfigTabSpec extends FreeSpec with WebBrowserSpec with BeforeAndAft
1716
"launch a simple workflow" in withWebDriver { implicit driver =>
1817
val wsName = "TestSpec_FireCloud_launch_a_simple_workflow" + UUID.randomUUID.toString
1918
implicit val authToken = Config.AuthTokens.testFireC
20-
Orchestration.workspaces.create(wsNamespace, wsName)
21-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.SingleParticipant.participantEntity)
19+
api.workspaces.create(billingProject, wsName)
20+
register cleanUp api.workspaces.delete(billingProject, wsName)
21+
api.importMetaData(billingProject, wsName, "entities", TestData.SingleParticipant.participantEntity)
2222

2323
signIn(Config.Accounts.testUserEmail, Config.Accounts.testUserPassword)
24-
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(wsNamespace, wsName)
25-
workspaceMethodConfigPage.open
24+
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(billingProject, wsName).open
2625
val methodConfigDetailsPage = workspaceMethodConfigPage.importMethodConfig(TestData.SimpleMethodConfig.namespace,
2726
TestData.SimpleMethodConfig.name, TestData.SimpleMethodConfig.snapshotId, methodConfigName, TestData.SimpleMethodConfig.rootEntityType)
2827
methodConfigDetailsPage.editMethodConfig(inputs = Some(TestData.SimpleMethodConfig.inputs))
2928
val submissionDetailsPage = methodConfigDetailsPage.launchAnalysis(TestData.SimpleMethodConfig.rootEntityType, TestData.SingleParticipant.entityId)
3029

3130
submissionDetailsPage.waitUntilSubmissionCompletes() //This feels like the wrong way to do this?
3231
assert(submissionDetailsPage.verifyWorkflowSucceeded())
33-
val submissionSummaryPage = new WorkspaceSummaryPage(wsNamespace, wsName)
34-
submissionSummaryPage.open
35-
submissionSummaryPage.deleteWorkspace()
3632
}
3733

3834
"launch modal with no default entities" in withWebDriver { implicit driver =>
3935
val wsName = "TestSpec_FireCloud_launch_modal_no_default_entities" + UUID.randomUUID.toString
4036
implicit val authToken = Config.AuthTokens.testFireC
41-
Orchestration.workspaces.create(wsNamespace, wsName)
42-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.SingleParticipant.participantEntity)
37+
api.workspaces.create(billingProject, wsName)
38+
register cleanUp api.workspaces.delete(billingProject, wsName)
39+
api.importMetaData(billingProject, wsName, "entities", TestData.SingleParticipant.participantEntity)
4340

4441
signIn(Config.Accounts.testUserEmail, Config.Accounts.testUserPassword)
45-
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(wsNamespace, wsName)
42+
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(billingProject, wsName)
4643
workspaceMethodConfigPage.open
4744
val methodConfigDetailsPage = workspaceMethodConfigPage.importMethodConfig(TestData.SimpleMethodConfig.namespace,
4845
TestData.SimpleMethodConfig.name, TestData.SimpleMethodConfig.snapshotId, methodConfigName, "participant_set")
4946
methodConfigDetailsPage.editMethodConfig(inputs = Some(TestData.SimpleMethodConfig.inputs))
5047
val launchModal = methodConfigDetailsPage.openlaunchModal()
5148
assert(launchModal.verifyNoDefaultEntityMessage())
5249
launchModal.closeModal()
53-
54-
val submissionSummaryPage = new WorkspaceSummaryPage(wsNamespace, wsName)
55-
submissionSummaryPage.open
56-
submissionSummaryPage.deleteWorkspace()
5750
}
5851

5952
"launch modal with workflows warning" in withWebDriver { implicit driver =>
6053
val wsName = "TestSpec_FireCloud_launch_modal_with_workflows_warning" + UUID.randomUUID.toString
6154
implicit val authToken = Config.AuthTokens.testFireC
62-
Orchestration.workspaces.create(wsNamespace, wsName)
55+
api.workspaces.create(billingProject, wsName)
56+
register cleanUp api.workspaces.delete(billingProject, wsName)
6357

64-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.SingleParticipant.participantEntity)
65-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.HundredAndOneSampleSet.samples)
66-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.HundredAndOneSampleSet.sampleSetCreation)
67-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.HundredAndOneSampleSet.sampleSetMembership)
58+
api.importMetaData(billingProject, wsName, "entities", TestData.SingleParticipant.participantEntity)
59+
api.importMetaData(billingProject, wsName, "entities", TestData.HundredAndOneSampleSet.samples)
60+
api.importMetaData(billingProject, wsName, "entities", TestData.HundredAndOneSampleSet.sampleSetCreation)
61+
api.importMetaData(billingProject, wsName, "entities", TestData.HundredAndOneSampleSet.sampleSetMembership)
6862

6963
signIn(Config.Accounts.testUserEmail, Config.Accounts.testUserPassword)
70-
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(wsNamespace, wsName)
64+
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(billingProject, wsName)
7165
workspaceMethodConfigPage.open
7266
val methodConfigDetailsPage = workspaceMethodConfigPage.importMethodConfig(TestData.SimpleMethodConfig.namespace,
7367
TestData.SimpleMethodConfig.name, TestData.SimpleMethodConfig.snapshotId, methodConfigName, "sample")
@@ -78,21 +72,18 @@ class MethodConfigTabSpec extends FreeSpec with WebBrowserSpec with BeforeAndAft
7872
launchModal.searchAndSelectEntity(TestData.HundredAndOneSampleSet.entityId)
7973
assert(launchModal.verifyWorkflowsWarning())
8074
launchModal.closeModal()
81-
82-
val submissionSummaryPage = new WorkspaceSummaryPage(wsNamespace, wsName)
83-
submissionSummaryPage.open
84-
submissionSummaryPage.deleteWorkspace()
8575
}
8676

8777
"launch workflow with wrong root entity" in withWebDriver { implicit driver =>
8878
val wsName = "TestSpec_FireCloud_launch_workflow_with_wrong_root_entity" + UUID.randomUUID.toString
8979
implicit val authToken = Config.AuthTokens.testFireC
90-
Orchestration.workspaces.create(wsNamespace, wsName)
91-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.SingleParticipant.participantEntity)
80+
api.workspaces.create(billingProject, wsName)
81+
register cleanUp api.workspaces.delete(billingProject, wsName)
82+
api.importMetaData(billingProject, wsName, "entities", TestData.SingleParticipant.participantEntity)
9283

9384
signIn(Config.Accounts.testUserEmail, Config.Accounts.testUserPassword)
9485
val workspaceListPage = new WorkspaceListPage
95-
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(wsNamespace, wsName)
86+
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(billingProject, wsName)
9687
workspaceMethodConfigPage.open
9788
val methodConfigDetailsPage = workspaceMethodConfigPage.importMethodConfig(TestData.SimpleMethodConfig.namespace,
9889
TestData.SimpleMethodConfig.name, TestData.SimpleMethodConfig.snapshotId, methodConfigName, "sample")
@@ -104,25 +95,22 @@ class MethodConfigTabSpec extends FreeSpec with WebBrowserSpec with BeforeAndAft
10495
launchModal.clickLaunchButton()
10596
assert(launchModal.verifyWrongEntityError(wrongRootEntityErrorText))
10697
launchModal.closeModal()
107-
108-
val submissionSummaryPage = new WorkspaceSummaryPage(wsNamespace, wsName)
109-
submissionSummaryPage.open
110-
submissionSummaryPage.deleteWorkspace()
11198
}
11299

113100
"launch workflow on set without expression" in withWebDriver { implicit driver =>
114101
val wsName = "TestSpec_FireCloud_launch_workflow_on_set_without_expression" + UUID.randomUUID.toString
115102
implicit val authToken = Config.AuthTokens.testFireC
116-
Orchestration.workspaces.create(wsNamespace, wsName)
117103

118-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.SingleParticipant.participantEntity)
119-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.HundredAndOneSampleSet.samples)
120-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.HundredAndOneSampleSet.sampleSetCreation)
121-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.HundredAndOneSampleSet.sampleSetMembership)
104+
api.workspaces.create(billingProject, wsName)
105+
register cleanUp api.workspaces.delete(billingProject, wsName)
106+
107+
api.importMetaData(billingProject, wsName, "entities", TestData.SingleParticipant.participantEntity)
108+
api.importMetaData(billingProject, wsName, "entities", TestData.HundredAndOneSampleSet.samples)
109+
api.importMetaData(billingProject, wsName, "entities", TestData.HundredAndOneSampleSet.sampleSetCreation)
110+
api.importMetaData(billingProject, wsName, "entities", TestData.HundredAndOneSampleSet.sampleSetMembership)
122111

123112
signIn(Config.Accounts.testUserEmail, Config.Accounts.testUserPassword)
124-
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(wsNamespace, wsName)
125-
workspaceMethodConfigPage.open
113+
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(billingProject, wsName).open
126114
val methodConfigDetailsPage = workspaceMethodConfigPage.importMethodConfig(TestData.SimpleMethodConfig.namespace,
127115
TestData.SimpleMethodConfig.name, TestData.SimpleMethodConfig.snapshotId, methodConfigName, "sample")
128116
methodConfigDetailsPage.editMethodConfig(inputs = Some(TestData.SimpleMethodConfig.inputs))
@@ -133,30 +121,36 @@ class MethodConfigTabSpec extends FreeSpec with WebBrowserSpec with BeforeAndAft
133121
launchModal.clickLaunchButton()
134122
assert(launchModal.verifyWrongEntityError(noExpressionErrorText))
135123
launchModal.closeModal()
136-
137-
val submissionSummaryPage = new WorkspaceSummaryPage(wsNamespace, wsName)
138-
submissionSummaryPage.open
139-
submissionSummaryPage.deleteWorkspace()
140-
141124
}
142125

143126
"launch workflow with input not defined" in withWebDriver { implicit driver =>
144127
val wsName = "TestSpec_FireCloud_launch_workflow_input_not_defined" + UUID.randomUUID.toString
145128
implicit val authToken = Config.AuthTokens.testFireC
146-
Orchestration.workspaces.create(wsNamespace, wsName)
147-
Orchestration.importMetaData(wsNamespace, wsName, "entities", TestData.SingleParticipant.participantEntity)
129+
api.workspaces.create(billingProject, wsName)
130+
register cleanUp api.workspaces.delete(billingProject, wsName)
131+
api.importMetaData(billingProject, wsName, "entities", TestData.SingleParticipant.participantEntity)
148132

149133
signIn(Config.Accounts.testUserEmail, Config.Accounts.testUserPassword)
150-
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(wsNamespace, wsName)
134+
val workspaceMethodConfigPage = new WorkspaceMethodConfigPage(billingProject, wsName)
151135
workspaceMethodConfigPage.open
152136
val methodConfigDetailsPage = workspaceMethodConfigPage.importMethodConfig(TestData.SimpleMethodConfig.namespace,
153137
TestData.SimpleMethodConfig.name, TestData.SimpleMethodConfig.snapshotId, methodConfigName, TestData.SimpleMethodConfig.rootEntityType)
154138
val submissionDetailsPage = methodConfigDetailsPage.launchAnalysis(TestData.SimpleMethodConfig.rootEntityType, TestData.SingleParticipant.entityId)
155139
assert(submissionDetailsPage.verifyWorkflowFailed())
140+
}
141+
142+
"import a method config from a workspace" in withWebDriver { implicit driver =>
143+
144+
}
145+
146+
"import a method config into a workspace from the method repo" in withWebDriver { implicit driver =>
147+
148+
}
149+
150+
// negative tests
151+
152+
"delete a method config from a workspace" in withWebDriver { implicit driver =>
156153

157-
val submissionSummaryPage = new WorkspaceSummaryPage(wsNamespace, wsName)
158-
submissionSummaryPage.open
159-
submissionSummaryPage.deleteWorkspace()
160154
}
161155

162156

automation/src/test/scala/RegistrationSpec.scala

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,18 @@ class RegistrationSpec extends FlatSpec with WebBrowserSpec {
2323

2424
new DataLibraryPage().validateLocation()
2525
}
26+
27+
it should "not allow an unregistered user access" in withWebDriver { implicit driver =>
28+
29+
30+
}
31+
32+
it should "allow a signed-in user to log out" in withWebDriver { implicit driver =>
33+
34+
}
35+
36+
37+
38+
39+
2640
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
entity:participant_id
2+
participant1

automation/src/test/scala/org/broadinstitute/dsde/firecloud/pages/WebBrowserSpec.scala

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package org.broadinstitute.dsde.firecloud.pages
22

3+
import java.io.File
34
import java.net.URL
45
import java.util.UUID
56

67
import org.broadinstitute.dsde.firecloud.api.Orchestration
78
import org.broadinstitute.dsde.firecloud.{Config, WebBrowserUtil}
89
import org.openqa.selenium.WebDriver
9-
import org.openqa.selenium.chrome.ChromeDriver
10-
import org.openqa.selenium.remote.{DesiredCapabilities, RemoteWebDriver}
10+
import org.openqa.selenium.chrome.ChromeDriverService
11+
import org.openqa.selenium.remote.{DesiredCapabilities, LocalFileDetector, RemoteWebDriver}
1112

1213
import scala.sys.SystemProperties
1314
import scala.util.Random
@@ -27,21 +28,27 @@ trait WebBrowserSpec extends WebBrowserUtil {
2728
* @param testCode the test code to run
2829
*/
2930
def withWebDriver(testCode: (WebDriver) => Any): Unit = {
30-
implicit val webDriver = initWebDriver()
31+
//this needs to be changed!
32+
val service = new ChromeDriverService.Builder().usingDriverExecutable(new File("/usr/local/bin/chromedriver")).usingAnyFreePort().build()
33+
service.start()
34+
implicit val webDriver = initWebDriver(service)
3135
try {
3236
testCode(webDriver)
3337
} finally {
3438
webDriver.quit()
39+
service.stop()
3540
}
3641
}
3742

38-
private def initWebDriver(): WebDriver = {
43+
private def initWebDriver(service: ChromeDriverService): WebDriver = {
3944
val localBrowser = new SystemProperties().get("local.browser")
4045
val defaultChrome = Config.ChromeSettings.chromedriverHost
41-
localBrowser match {
42-
case Some("true") => new ChromeDriver
46+
val driver = localBrowser match {
47+
case Some("true") => new RemoteWebDriver(service.getUrl, DesiredCapabilities.chrome())
4348
case _ => new RemoteWebDriver(new URL(defaultChrome), DesiredCapabilities.chrome())
4449
}
50+
driver.setFileDetector(new LocalFileDetector())
51+
driver
4552
}
4653

4754
/**

0 commit comments

Comments
 (0)