debian-forge-composer/internal/client/modules_test.go
Brian C. Lane 856eb59edf client: Move the weldrcheck integration tests to client
With this change the integration tests can now also be run as unit tests
against the mocked server. The way it works is this:

internal/client/unit_test.go sets up the mock server and is built
when the `integration` build tag is *not* included.

internal/client/integration_test.go sets up the connection to an
existing server and is built when the `integration` build tag *is*
included.

The test code is built and run for both cases.

Currently they all pass for the integration test run. The unit test
cases need some work because the mocked server isn't a real server with
real depsolving and package lists. A future commit will fix this.
2020-03-27 19:07:33 +01:00

72 lines
2.5 KiB
Go

// Package client - modules_test contains functions to check the modules API
// Copyright (C) 2020 by Red Hat, Inc.
// Tests should be self-contained and not depend on the state of the server
// They should use their own blueprints, not the default blueprints
// They should not assume version numbers for packages will match
// They should run tests that depend on previous results from the same function
// not from other functions.
package client
import (
"testing"
"github.com/stretchr/testify/require"
)
// List all the modules
func TestListAllModulesV0(t *testing.T) {
modules, api, err := ListAllModulesV0(testState.socket)
require.NoError(t, err)
require.Nil(t, api, "ListAllModules failed: %#v", api)
require.True(t, len(modules) > 1, "Not enough modules returned")
}
// List some modules
func TestListSomeModulesV0(t *testing.T) {
modules, api, err := ListSomeModulesV0(testState.socket, 0, 5)
require.NoError(t, err)
require.Nil(t, api, "ListSomeProjects failed: %#v", api)
require.True(t, len(modules) == 5, "Not enough modules returned")
}
// List one module
func TestListOneModulesV0(t *testing.T) {
modules, api, err := ListModulesV0(testState.socket, "bash")
require.NoError(t, err)
require.Nil(t, api, "ListModules failed: %#v", api)
require.True(t, len(modules) == 1, "Not enough modules returned")
}
// List two modules
func TestListTwoModulesV0(t *testing.T) {
modules, api, err := ListModulesV0(testState.socket, "bash,tmux")
require.NoError(t, err)
require.Nil(t, api, "ListModules failed: %#v", api)
require.True(t, len(modules) == 2, "Not enough modules returned")
}
// Get info on a specific module
func TestOneModuleInfoV0(t *testing.T) {
modules, api, err := GetModulesInfoV0(testState.socket, "bash")
require.NoError(t, err)
require.Nil(t, api, "GetModulesInfo failed: %#v", api)
require.True(t, len(modules) == 1, "Not enough modules returned: %#v", modules)
}
// Get info on two specific modules
func TestTwoModuleInfoV0(t *testing.T) {
modules, api, err := GetModulesInfoV0(testState.socket, "bash,tmux")
require.NoError(t, err)
require.Nil(t, api, "GetModulesInfo failed: %#v", api)
require.True(t, len(modules) == 2, "Not enough modules returned: %#v", modules)
}
// Test an invalid info request
func TestEmptyModuleInfoV0(t *testing.T) {
modules, api, err := GetModulesInfoV0(testState.socket, "")
require.NoError(t, err)
require.NotNil(t, api, "did not return an error")
require.False(t, api.Status, "wrong Status (true)")
require.True(t, len(modules) == 0)
}