diff --git a/internal/client/blueprints_test.go b/internal/client/blueprints_test.go index 20980300e..2f932bd86 100644 --- a/internal/client/blueprints_test.go +++ b/internal/client/blueprints_test.go @@ -697,6 +697,33 @@ func TestNonBlueprintDepsolveV0(t *testing.T) { // freeze a blueprint func TestBlueprintFreezeV0(t *testing.T) { + if testState.unitTest { + // The unit test mock server uses packages named dep-packageN + bp := `{ + "name": "test", + "description": "CheckBlueprintFreezeV0", + "version": "0.0.1", + "packages": [{"name": "dep-package1", "version": "*"}], + "modules": [{"name": "dep-package2", "version": "*"}] + }` + + // Push a blueprint + resp, err := PostJSONBlueprintV0(testState.socket, bp) + require.NoError(t, err, "POST blueprint failed with a client error") + require.True(t, resp.Status, "POST blueprint failed: %#v", resp) + + // The unit test server returns hard-coded frozen packages + // in the modules section with an empty packages list + frozen, api, err := FreezeBlueprintV0(testState.socket, "test") + require.NoError(t, err, "Freeze blueprint failed with a client error") + require.Nil(t, api, "FreezeBlueprint failed: %#v", api) + require.Greater(t, len(frozen.Blueprints), 0, "No frozen blueprints returned") + require.Equal(t, 1, len(frozen.Blueprints[0].Blueprint.Packages), "No frozen packages returned") + require.Equal(t, 1, len(frozen.Blueprints[0].Blueprint.Modules), "No frozen modules returned") + return + } + + // Integration test bp := `{ "name": "test-freeze-blueprint-v0", "description": "CheckBlueprintFreezeV0", diff --git a/internal/client/client_test.go b/internal/client/client_test.go index af7a1aafd..cf51ed710 100644 --- a/internal/client/client_test.go +++ b/internal/client/client_test.go @@ -32,7 +32,7 @@ func TestRequest(t *testing.T) { // Test that apiError returns an error when trying to parse non-JSON response _, err = apiError(resp) if err == nil { - t.Fatalf("apiError of a 404 response did not return an error") + t.Fatalf("apiError of a 404 response did not return an error: %#v", resp) } // Make a request with a bad offset to trigger a JSON response with Status set to 400 diff --git a/internal/client/integration_test.go b/internal/client/integration_test.go index 7f6bee16f..a1468544d 100644 --- a/internal/client/integration_test.go +++ b/internal/client/integration_test.go @@ -21,7 +21,7 @@ var testState *TestState // Also makes sure there is a running server to test against func TestMain(m *testing.M) { var err error - testState, err = setUpTestState("/run/weldr/api.socket", 60*time.Second) + testState, err = setUpTestState("/run/weldr/api.socket", 60*time.Second, false) if err != nil { fmt.Printf("ERROR: Test setup failed: %s\n", err) os.Exit(1) diff --git a/internal/client/modules_test.go b/internal/client/modules_test.go index 7914bec19..b352982b0 100644 --- a/internal/client/modules_test.go +++ b/internal/client/modules_test.go @@ -32,7 +32,15 @@ func TestListSomeModulesV0(t *testing.T) { // List one module func TestListOneModulesV0(t *testing.T) { - modules, api, err := ListModulesV0(testState.socket, "bash") + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1" + } else { + moduleNames = "bash" + } + modules, api, err := ListModulesV0(testState.socket, moduleNames) require.NoError(t, err) require.Nil(t, api, "ListModules failed: %#v", api) require.True(t, len(modules) == 1, "Not enough modules returned") @@ -40,7 +48,15 @@ func TestListOneModulesV0(t *testing.T) { // List two modules func TestListTwoModulesV0(t *testing.T) { - modules, api, err := ListModulesV0(testState.socket, "bash,tmux") + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1,package2" + } else { + moduleNames = "bash,tmux" + } + modules, api, err := ListModulesV0(testState.socket, moduleNames) require.NoError(t, err) require.Nil(t, api, "ListModules failed: %#v", api) require.True(t, len(modules) == 2, "Not enough modules returned") @@ -48,7 +64,15 @@ func TestListTwoModulesV0(t *testing.T) { // Get info on a specific module func TestOneModuleInfoV0(t *testing.T) { - modules, api, err := GetModulesInfoV0(testState.socket, "bash") + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1" + } else { + moduleNames = "bash" + } + modules, api, err := GetModulesInfoV0(testState.socket, moduleNames) require.NoError(t, err) require.Nil(t, api, "GetModulesInfo failed: %#v", api) require.True(t, len(modules) == 1, "Not enough modules returned: %#v", modules) @@ -56,7 +80,15 @@ func TestOneModuleInfoV0(t *testing.T) { // Get info on two specific modules func TestTwoModuleInfoV0(t *testing.T) { - modules, api, err := GetModulesInfoV0(testState.socket, "bash,tmux") + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1,package2" + } else { + moduleNames = "bash,tmux" + } + modules, api, err := GetModulesInfoV0(testState.socket, moduleNames) require.NoError(t, err) require.Nil(t, api, "GetModulesInfo failed: %#v", api) require.True(t, len(modules) == 2, "Not enough modules returned: %#v", modules) diff --git a/internal/client/projects_test.go b/internal/client/projects_test.go index 0765e5359..66568bc96 100644 --- a/internal/client/projects_test.go +++ b/internal/client/projects_test.go @@ -33,7 +33,15 @@ func TestListSomeProjectsV0(t *testing.T) { // Get info on a specific project func TestOneProjectsInfoV0(t *testing.T) { - projs, api, err := GetProjectsInfoV0(testState.socket, "bash") + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1" + } else { + moduleNames = "bash" + } + projs, api, err := GetProjectsInfoV0(testState.socket, moduleNames) require.NoError(t, err) require.Nil(t, api, "GetProjectsInfo failed: %#v", api) require.True(t, len(projs) == 1, "Not enough projects returned") @@ -41,7 +49,15 @@ func TestOneProjectsInfoV0(t *testing.T) { // Get info on a two specific projects func TestTwoProjectsInfoV0(t *testing.T) { - projs, api, err := GetProjectsInfoV0(testState.socket, "bash,tmux") + var moduleNames string + + // Unit test uses modules/packages named packageN + if testState.unitTest { + moduleNames = "package1,package2" + } else { + moduleNames = "bash,tmux" + } + projs, api, err := GetProjectsInfoV0(testState.socket, moduleNames) require.NoError(t, err) require.Nil(t, api, "GetProjectsInfo failed: %#v", api) require.True(t, len(projs) == 2, "Not enough projects returned") diff --git a/internal/client/unit_test.go b/internal/client/unit_test.go index 4d00f58bf..00e33d87d 100644 --- a/internal/client/unit_test.go +++ b/internal/client/unit_test.go @@ -58,7 +58,7 @@ func TestMain(m *testing.M) { } }() - testState, err = setUpTestState(socketPath, 60*time.Second) + testState, err = setUpTestState(socketPath, 60*time.Second, true) if err != nil { log.Fatalf("ERROR: Test setup failed: %s\n", err) } diff --git a/internal/client/utils.go b/internal/client/utils.go index 3fbb91df1..e6a37be70 100644 --- a/internal/client/utils.go +++ b/internal/client/utils.go @@ -18,6 +18,7 @@ type TestState struct { socket *http.Client apiVersion int repoDir string + unitTest bool } // isStringInSlice returns true if the string is present, false if not @@ -31,8 +32,9 @@ func isStringInSlice(slice []string, s string) bool { return false } -func setUpTestState(socketPath string, timeout time.Duration) (*TestState, error) { - var state TestState +func setUpTestState(socketPath string, timeout time.Duration, unitTest bool) (*TestState, error) { + state := TestState{unitTest: unitTest} + state.socket = &http.Client{ // TODO This may be too short/simple for downloading images Timeout: timeout,