|
@@ -13,20 +13,21 @@ import (
|
|
func TestUpgradeItemNewScenarioInCollection(t *testing.T) {
|
|
func TestUpgradeItemNewScenarioInCollection(t *testing.T) {
|
|
hub := envSetup(t)
|
|
hub := envSetup(t)
|
|
|
|
|
|
|
|
+ item := hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection")
|
|
|
|
+
|
|
// fresh install of collection
|
|
// fresh install of collection
|
|
- require.False(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Downloaded)
|
|
|
|
- require.False(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Installed)
|
|
|
|
|
|
+ require.False(t, item.State.Downloaded)
|
|
|
|
+ require.False(t, item.State.Installed)
|
|
|
|
|
|
- item := hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection")
|
|
|
|
require.NoError(t, item.Install(false, false))
|
|
require.NoError(t, item.Install(false, false))
|
|
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Downloaded)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Installed)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.UpToDate)
|
|
|
|
- require.False(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Tainted)
|
|
|
|
|
|
+ require.True(t, item.State.Downloaded)
|
|
|
|
+ require.True(t, item.State.Installed)
|
|
|
|
+ require.True(t, item.State.UpToDate)
|
|
|
|
+ require.False(t, item.State.Tainted)
|
|
|
|
|
|
// This is the scenario that gets added in next version of collection
|
|
// This is the scenario that gets added in next version of collection
|
|
- require.Nil(t, hub.Items[SCENARIOS]["crowdsecurity/barfoo_scenario"])
|
|
|
|
|
|
+ require.Nil(t, hub.GetItem(SCENARIOS, "crowdsecurity/barfoo_scenario"))
|
|
|
|
|
|
assertCollectionDepsInstalled(t, hub, "crowdsecurity/test_collection")
|
|
assertCollectionDepsInstalled(t, hub, "crowdsecurity/test_collection")
|
|
|
|
|
|
@@ -44,19 +45,20 @@ func TestUpgradeItemNewScenarioInCollection(t *testing.T) {
|
|
|
|
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Downloaded)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Installed)
|
|
|
|
- require.False(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.UpToDate)
|
|
|
|
- require.False(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Tainted)
|
|
|
|
-
|
|
|
|
item = hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection")
|
|
item = hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection")
|
|
|
|
+
|
|
|
|
+ require.True(t, item.State.Downloaded)
|
|
|
|
+ require.True(t, item.State.Installed)
|
|
|
|
+ require.False(t, item.State.UpToDate)
|
|
|
|
+ require.False(t, item.State.Tainted)
|
|
|
|
+
|
|
didUpdate, err := item.Upgrade(false)
|
|
didUpdate, err := item.Upgrade(false)
|
|
require.NoError(t, err)
|
|
require.NoError(t, err)
|
|
require.True(t, didUpdate)
|
|
require.True(t, didUpdate)
|
|
assertCollectionDepsInstalled(t, hub, "crowdsecurity/test_collection")
|
|
assertCollectionDepsInstalled(t, hub, "crowdsecurity/test_collection")
|
|
|
|
|
|
- require.True(t, hub.Items[SCENARIOS]["crowdsecurity/barfoo_scenario"].State.Downloaded)
|
|
|
|
- require.True(t, hub.Items[SCENARIOS]["crowdsecurity/barfoo_scenario"].State.Installed)
|
|
|
|
|
|
+ require.True(t, hub.GetItem(SCENARIOS, "crowdsecurity/barfoo_scenario").State.Downloaded)
|
|
|
|
+ require.True(t, hub.GetItem(SCENARIOS, "crowdsecurity/barfoo_scenario").State.Installed)
|
|
}
|
|
}
|
|
|
|
|
|
// Install a collection, disable a scenario.
|
|
// Install a collection, disable a scenario.
|
|
@@ -64,19 +66,20 @@ func TestUpgradeItemNewScenarioInCollection(t *testing.T) {
|
|
func TestUpgradeItemInDisabledScenarioShouldNotBeInstalled(t *testing.T) {
|
|
func TestUpgradeItemInDisabledScenarioShouldNotBeInstalled(t *testing.T) {
|
|
hub := envSetup(t)
|
|
hub := envSetup(t)
|
|
|
|
|
|
|
|
+ item := hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection")
|
|
|
|
+
|
|
// fresh install of collection
|
|
// fresh install of collection
|
|
- require.False(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Downloaded)
|
|
|
|
- require.False(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Installed)
|
|
|
|
- require.False(t, hub.Items[SCENARIOS]["crowdsecurity/foobar_scenario"].State.Installed)
|
|
|
|
|
|
+ require.False(t, item.State.Downloaded)
|
|
|
|
+ require.False(t, item.State.Installed)
|
|
|
|
+ require.False(t, hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario").State.Installed)
|
|
|
|
|
|
- item := hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection")
|
|
|
|
require.NoError(t, item.Install(false, false))
|
|
require.NoError(t, item.Install(false, false))
|
|
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Downloaded)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Installed)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.UpToDate)
|
|
|
|
- require.False(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Tainted)
|
|
|
|
- require.True(t, hub.Items[SCENARIOS]["crowdsecurity/foobar_scenario"].State.Installed)
|
|
|
|
|
|
+ require.True(t, item.State.Downloaded)
|
|
|
|
+ require.True(t, item.State.Installed)
|
|
|
|
+ require.True(t, item.State.UpToDate)
|
|
|
|
+ require.False(t, item.State.Tainted)
|
|
|
|
+ require.True(t, hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario").State.Installed)
|
|
assertCollectionDepsInstalled(t, hub, "crowdsecurity/test_collection")
|
|
assertCollectionDepsInstalled(t, hub, "crowdsecurity/test_collection")
|
|
|
|
|
|
item = hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario")
|
|
item = hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario")
|
|
@@ -92,11 +95,12 @@ func TestUpgradeItemInDisabledScenarioShouldNotBeInstalled(t *testing.T) {
|
|
|
|
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
// scenario referenced by collection was deleted hence, collection should be tainted
|
|
// scenario referenced by collection was deleted hence, collection should be tainted
|
|
- require.False(t, hub.Items[SCENARIOS]["crowdsecurity/foobar_scenario"].State.Installed)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Tainted)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Downloaded)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Installed)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.UpToDate)
|
|
|
|
|
|
+ require.False(t, hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario").State.Installed)
|
|
|
|
+
|
|
|
|
+ require.True(t, hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection").State.Tainted)
|
|
|
|
+ require.True(t, hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection").State.Downloaded)
|
|
|
|
+ require.True(t, hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection").State.Installed)
|
|
|
|
+ require.True(t, hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection").State.UpToDate)
|
|
|
|
|
|
hub, err = NewHub(hub.local, remote, true)
|
|
hub, err = NewHub(hub.local, remote, true)
|
|
require.NoError(t, err, "failed to download index: %s", err)
|
|
require.NoError(t, err, "failed to download index: %s", err)
|
|
@@ -107,7 +111,7 @@ func TestUpgradeItemInDisabledScenarioShouldNotBeInstalled(t *testing.T) {
|
|
require.False(t, didUpdate)
|
|
require.False(t, didUpdate)
|
|
|
|
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
- require.False(t, hub.Items[SCENARIOS]["crowdsecurity/foobar_scenario"].State.Installed)
|
|
|
|
|
|
+ require.False(t, hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario").State.Installed)
|
|
}
|
|
}
|
|
|
|
|
|
// getHubOrFail refreshes the hub state (load index, sync) and returns the singleton, or fails the test.
|
|
// getHubOrFail refreshes the hub state (load index, sync) and returns the singleton, or fails the test.
|
|
@@ -124,19 +128,20 @@ func getHubOrFail(t *testing.T, local *csconfig.LocalHubCfg, remote *RemoteHubCf
|
|
func TestUpgradeItemNewScenarioIsInstalledWhenReferencedScenarioIsDisabled(t *testing.T) {
|
|
func TestUpgradeItemNewScenarioIsInstalledWhenReferencedScenarioIsDisabled(t *testing.T) {
|
|
hub := envSetup(t)
|
|
hub := envSetup(t)
|
|
|
|
|
|
|
|
+ item := hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection")
|
|
|
|
+
|
|
// fresh install of collection
|
|
// fresh install of collection
|
|
- require.False(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Downloaded)
|
|
|
|
- require.False(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Installed)
|
|
|
|
- require.False(t, hub.Items[SCENARIOS]["crowdsecurity/foobar_scenario"].State.Installed)
|
|
|
|
|
|
+ require.False(t, item.State.Downloaded)
|
|
|
|
+ require.False(t, item.State.Installed)
|
|
|
|
+ require.False(t, hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario").State.Installed)
|
|
|
|
|
|
- item := hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection")
|
|
|
|
require.NoError(t, item.Install(false, false))
|
|
require.NoError(t, item.Install(false, false))
|
|
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Downloaded)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Installed)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.UpToDate)
|
|
|
|
- require.False(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Tainted)
|
|
|
|
- require.True(t, hub.Items[SCENARIOS]["crowdsecurity/foobar_scenario"].State.Installed)
|
|
|
|
|
|
+ require.True(t, item.State.Downloaded)
|
|
|
|
+ require.True(t, item.State.Installed)
|
|
|
|
+ require.True(t, item.State.UpToDate)
|
|
|
|
+ require.False(t, item.State.Tainted)
|
|
|
|
+ require.True(t, hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario").State.Installed)
|
|
assertCollectionDepsInstalled(t, hub, "crowdsecurity/test_collection")
|
|
assertCollectionDepsInstalled(t, hub, "crowdsecurity/test_collection")
|
|
|
|
|
|
item = hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario")
|
|
item = hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario")
|
|
@@ -152,12 +157,12 @@ func TestUpgradeItemNewScenarioIsInstalledWhenReferencedScenarioIsDisabled(t *te
|
|
|
|
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
// scenario referenced by collection was deleted hence, collection should be tainted
|
|
// scenario referenced by collection was deleted hence, collection should be tainted
|
|
- require.False(t, hub.Items[SCENARIOS]["crowdsecurity/foobar_scenario"].State.Installed)
|
|
|
|
- require.True(t, hub.Items[SCENARIOS]["crowdsecurity/foobar_scenario"].State.Downloaded) // this fails
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Tainted)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Downloaded)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.Installed)
|
|
|
|
- require.True(t, hub.Items[COLLECTIONS]["crowdsecurity/test_collection"].State.UpToDate)
|
|
|
|
|
|
+ require.False(t, hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario").State.Installed)
|
|
|
|
+ require.True(t, hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario").State.Downloaded) // this fails
|
|
|
|
+ require.True(t, hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection").State.Tainted)
|
|
|
|
+ require.True(t, hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection").State.Downloaded)
|
|
|
|
+ require.True(t, hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection").State.Installed)
|
|
|
|
+ require.True(t, hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection").State.UpToDate)
|
|
|
|
|
|
// collection receives an update. It now adds new scenario "crowdsecurity/barfoo_scenario"
|
|
// collection receives an update. It now adds new scenario "crowdsecurity/barfoo_scenario"
|
|
// we now attempt to upgrade the collection, however it shouldn't install the foobar_scenario
|
|
// we now attempt to upgrade the collection, however it shouldn't install the foobar_scenario
|
|
@@ -167,7 +172,7 @@ func TestUpgradeItemNewScenarioIsInstalledWhenReferencedScenarioIsDisabled(t *te
|
|
hub, err = NewHub(hub.local, remote, true)
|
|
hub, err = NewHub(hub.local, remote, true)
|
|
require.NoError(t, err, "failed to download index: %s", err)
|
|
require.NoError(t, err, "failed to download index: %s", err)
|
|
|
|
|
|
- require.False(t, hub.Items[SCENARIOS]["crowdsecurity/foobar_scenario"].State.Installed)
|
|
|
|
|
|
+ require.False(t, hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario").State.Installed)
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
|
|
|
|
item = hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection")
|
|
item = hub.GetItem(COLLECTIONS, "crowdsecurity/test_collection")
|
|
@@ -176,14 +181,14 @@ func TestUpgradeItemNewScenarioIsInstalledWhenReferencedScenarioIsDisabled(t *te
|
|
require.True(t, didUpdate)
|
|
require.True(t, didUpdate)
|
|
|
|
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
hub = getHubOrFail(t, hub.local, remote)
|
|
- require.False(t, hub.Items[SCENARIOS]["crowdsecurity/foobar_scenario"].State.Installed)
|
|
|
|
- require.True(t, hub.Items[SCENARIOS]["crowdsecurity/barfoo_scenario"].State.Installed)
|
|
|
|
|
|
+ require.False(t, hub.GetItem(SCENARIOS, "crowdsecurity/foobar_scenario").State.Installed)
|
|
|
|
+ require.True(t, hub.GetItem(SCENARIOS, "crowdsecurity/barfoo_scenario").State.Installed)
|
|
}
|
|
}
|
|
|
|
|
|
func assertCollectionDepsInstalled(t *testing.T, hub *Hub, collection string) {
|
|
func assertCollectionDepsInstalled(t *testing.T, hub *Hub, collection string) {
|
|
t.Helper()
|
|
t.Helper()
|
|
|
|
|
|
- c := hub.Items[COLLECTIONS][collection]
|
|
|
|
|
|
+ c := hub.GetItem(COLLECTIONS, collection)
|
|
require.NoError(t, c.checkSubItemVersions())
|
|
require.NoError(t, c.checkSubItemVersions())
|
|
}
|
|
}
|
|
|
|
|