debian-forge-composer/internal/client/modules_test.go
Brian C. Lane e3934108f7 client: Handle the differences between unit tests and integration tests
The mock server used by unit tests is slightly different than the
running server, mostly related to package names that are hard-coded.

This adds a bool to testState that can be used in the tests to alter the
expected behavior. It should be used as little as possible.
2020-03-27 19:07:33 +01:00

104 lines
3.2 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) {
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")
}
// List two modules
func TestListTwoModulesV0(t *testing.T) {
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")
}
// Get info on a specific module
func TestOneModuleInfoV0(t *testing.T) {
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)
}
// Get info on two specific modules
func TestTwoModuleInfoV0(t *testing.T) {
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)
}
// 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)
}