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.
104 lines
3.2 KiB
Go
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)
|
|
}
|