|
Packit Service |
4d2de5 |
// Package client - source_test contains functions to check the source API
|
|
Packit Service |
4d2de5 |
// Copyright (C) 2020 by Red Hat, Inc.
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Tests should be self-contained and not depend on the state of the server
|
|
Packit Service |
4d2de5 |
// They should use their own blueprints, not the default blueprints
|
|
Packit Service |
4d2de5 |
// They should not assume version numbers for packages will match
|
|
Packit Service |
4d2de5 |
// They should run tests that depend on previous results from the same function
|
|
Packit Service |
4d2de5 |
// not from other functions.
|
|
Packit Service |
4d2de5 |
package client
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
import (
|
|
Packit Service |
4d2de5 |
"strings"
|
|
Packit Service |
4d2de5 |
"testing"
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
"github.com/stretchr/testify/require"
|
|
Packit Service |
4d2de5 |
)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST a new JSON source
|
|
Packit Service |
4d2de5 |
func TestPOSTJSONSourceV0(t *testing.T) {
|
|
Packit Service |
4d2de5 |
source := `{
|
|
Packit Service |
4d2de5 |
"name": "package-repo-json-v0",
|
|
Packit Service |
4d2de5 |
"url": "file://REPO-PATH",
|
|
Packit Service |
4d2de5 |
"type": "yum-baseurl",
|
|
Packit Service |
4d2de5 |
"proxy": "https://proxy-url/",
|
|
Packit Service |
4d2de5 |
"check_ssl": true,
|
|
Packit Service |
4d2de5 |
"check_gpg": true,
|
|
Packit Service |
4d2de5 |
"gpgkey_urls": ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
}`
|
|
Packit Service |
4d2de5 |
source = strings.Replace(source, "REPO-PATH", testState.repoDir, 1)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err := PostJSONSourceV0(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "POST source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err = DeleteSourceV0(testState.socket, "package-repo-json-v0")
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "DELETE source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "DELETE source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST an empty JSON source using V0 API
|
|
Packit Service |
4d2de5 |
func TestPOSTEmptyJSONSourceV0(t *testing.T) {
|
|
Packit Service |
4d2de5 |
resp, err := PostJSONSourceV0(testState.socket, "")
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "did not return an error")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST an empty JSON source using V1 API
|
|
Packit Service |
4d2de5 |
func TestPOSTEmptyJSONSourceV1(t *testing.T) {
|
|
Packit Service |
4d2de5 |
resp, err := PostJSONSourceV1(testState.socket, "")
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "did not return an error")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST an invalid JSON source using V0 API
|
|
Packit Service |
4d2de5 |
func TestPOSTInvalidJSONSourceV0(t *testing.T) {
|
|
Packit Service |
4d2de5 |
// Missing quote in url
|
|
Packit Service |
4d2de5 |
source := `{
|
|
Packit Service |
4d2de5 |
"name": "package-repo-json-v0",
|
|
Packit Service |
4d2de5 |
"url": "file://REPO-PATH,
|
|
Packit Service |
4d2de5 |
"type": "yum-baseurl",
|
|
Packit Service |
4d2de5 |
"proxy": "https://proxy-url/",
|
|
Packit Service |
4d2de5 |
"check_ssl": true,
|
|
Packit Service |
4d2de5 |
"check_gpg": true,
|
|
Packit Service |
4d2de5 |
"gpgkey_urls": ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
}`
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err := PostJSONSourceV0(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "did not return an error")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST an invalid JSON source using V1 API
|
|
Packit Service |
4d2de5 |
func TestPOSTInvalidJSONSourceV1(t *testing.T) {
|
|
Packit Service |
4d2de5 |
// Missing quote in url
|
|
Packit Service |
4d2de5 |
source := `{
|
|
Packit Service |
4d2de5 |
"id": "package-repo-json-v1",
|
|
Packit Service |
4d2de5 |
"name": "json package repo",
|
|
Packit Service |
4d2de5 |
"url": "file://REPO-PATH,
|
|
Packit Service |
4d2de5 |
"type": "yum-baseurl",
|
|
Packit Service |
4d2de5 |
"proxy": "https://proxy-url/",
|
|
Packit Service |
4d2de5 |
"check_ssl": true,
|
|
Packit Service |
4d2de5 |
"check_gpg": true,
|
|
Packit Service |
4d2de5 |
"gpgkey_urls": ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
}`
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err := PostJSONSourceV1(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "did not return an error")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST a new TOML source using V0 API
|
|
Packit Service |
4d2de5 |
func TestPOSTTOMLSourceV0(t *testing.T) {
|
|
Packit Service |
4d2de5 |
source := `
|
|
Packit Service |
4d2de5 |
name = "package-repo-toml-v0"
|
|
Packit Service |
4d2de5 |
url = "file://REPO-PATH"
|
|
Packit Service |
4d2de5 |
type = "yum-baseurl"
|
|
Packit Service |
4d2de5 |
proxy = "https://proxy-url/"
|
|
Packit Service |
4d2de5 |
check_ssl = true
|
|
Packit Service |
4d2de5 |
check_gpg = true
|
|
Packit Service |
4d2de5 |
gpgkey_urls = ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
`
|
|
Packit Service |
4d2de5 |
source = strings.Replace(source, "REPO-PATH", testState.repoDir, 1)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err := PostTOMLSourceV0(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "POST source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err = DeleteSourceV0(testState.socket, "package-repo-toml-v0")
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "DELETE source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "DELETE source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST a new TOML source using V1 API
|
|
Packit Service |
4d2de5 |
func TestPOSTTOMLSourceV1(t *testing.T) {
|
|
Packit Service |
4d2de5 |
source := `
|
|
Packit Service |
4d2de5 |
id = "package-repo-toml-v1"
|
|
Packit Service |
4d2de5 |
name = "toml package repo"
|
|
Packit Service |
4d2de5 |
url = "file://REPO-PATH"
|
|
Packit Service |
4d2de5 |
type = "yum-baseurl"
|
|
Packit Service |
4d2de5 |
proxy = "https://proxy-url/"
|
|
Packit Service |
4d2de5 |
check_ssl = true
|
|
Packit Service |
4d2de5 |
check_gpg = true
|
|
Packit Service |
4d2de5 |
gpgkey_urls = ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
`
|
|
Packit Service |
4d2de5 |
source = strings.Replace(source, "REPO-PATH", testState.repoDir, 1)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err := PostTOMLSourceV1(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "POST source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err = DeleteSourceV1(testState.socket, "package-repo-toml-v1")
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "DELETE source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "DELETE source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST an empty TOML source using V0 API
|
|
Packit Service |
4d2de5 |
func TestPOSTEmptyTOMLSourceV0(t *testing.T) {
|
|
Packit Service |
4d2de5 |
resp, err := PostTOMLSourceV0(testState.socket, "")
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "did not return an error")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST an empty TOML source using V1 API
|
|
Packit Service |
4d2de5 |
func TestPOSTEmptyTOMLSourceV1(t *testing.T) {
|
|
Packit Service |
4d2de5 |
resp, err := PostTOMLSourceV1(testState.socket, "")
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "did not return an error")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST an invalid TOML source using V0 API
|
|
Packit Service |
4d2de5 |
func TestPOSTInvalidTOMLSourceV0(t *testing.T) {
|
|
Packit Service |
4d2de5 |
// Missing quote in url
|
|
Packit Service |
4d2de5 |
source := `
|
|
Packit Service |
4d2de5 |
name = "package-repo-toml-v0"
|
|
Packit Service |
4d2de5 |
url = "file://REPO-PATH
|
|
Packit Service |
4d2de5 |
type = "yum-baseurl"
|
|
Packit Service |
4d2de5 |
proxy = "https://proxy-url/"
|
|
Packit Service |
4d2de5 |
check_ssl = true
|
|
Packit Service |
4d2de5 |
check_gpg = true
|
|
Packit Service |
4d2de5 |
gpgkey_urls = ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
`
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err := PostTOMLSourceV0(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "did not return an error")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST an invalid TOML source using V1 API
|
|
Packit Service |
4d2de5 |
func TestPOSTInvalidTOMLSourceV1(t *testing.T) {
|
|
Packit Service |
4d2de5 |
// Missing quote in url
|
|
Packit Service |
4d2de5 |
source := `
|
|
Packit Service |
4d2de5 |
id = "package-repo-toml-v1"
|
|
Packit Service |
4d2de5 |
name = "toml package repo"
|
|
Packit Service |
4d2de5 |
url = "file://REPO-PATH
|
|
Packit Service |
4d2de5 |
type = "yum-baseurl"
|
|
Packit Service |
4d2de5 |
proxy = "https://proxy-url/"
|
|
Packit Service |
4d2de5 |
check_ssl = true
|
|
Packit Service |
4d2de5 |
check_gpg = true
|
|
Packit Service |
4d2de5 |
gpgkey_urls = ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
`
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err := PostTOMLSourceV1(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "did not return an error")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST a wrong TOML source using V0 API
|
|
Packit Service |
4d2de5 |
func TestPOSTWrongTOMLSourceV0(t *testing.T) {
|
|
Packit Service |
4d2de5 |
// Should not have a [] section
|
|
Packit Service |
4d2de5 |
source := `
|
|
Packit Service |
4d2de5 |
[package-repo-toml-v0]
|
|
Packit Service |
4d2de5 |
name = "package-repo-toml-v0"
|
|
Packit Service |
4d2de5 |
url = "file://REPO-PATH
|
|
Packit Service |
4d2de5 |
type = "yum-baseurl"
|
|
Packit Service |
4d2de5 |
proxy = "https://proxy-url/"
|
|
Packit Service |
4d2de5 |
check_ssl = true
|
|
Packit Service |
4d2de5 |
check_gpg = true
|
|
Packit Service |
4d2de5 |
gpgkey_urls = ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
`
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err := PostTOMLSourceV0(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "did not return an error")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// POST a wrong TOML source using V1 API
|
|
Packit Service |
4d2de5 |
func TestPOSTWrongTOMLSourceV1(t *testing.T) {
|
|
Packit Service |
4d2de5 |
// Should not have a [] section
|
|
Packit Service |
4d2de5 |
source := `
|
|
Packit Service |
4d2de5 |
[package-repo-toml-v1]
|
|
Packit Service |
4d2de5 |
id = "package-repo-toml-v1"
|
|
Packit Service |
4d2de5 |
name = "toml package repo"
|
|
Packit Service |
4d2de5 |
url = "file://REPO-PATH
|
|
Packit Service |
4d2de5 |
type = "yum-baseurl"
|
|
Packit Service |
4d2de5 |
proxy = "https://proxy-url/"
|
|
Packit Service |
4d2de5 |
check_ssl = true
|
|
Packit Service |
4d2de5 |
check_gpg = true
|
|
Packit Service |
4d2de5 |
gpgkey_urls = ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
`
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err := PostTOMLSourceV1(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "did not return an error")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// list sources using the v0 API
|
|
Packit Service |
4d2de5 |
func TestListSourcesV0(t *testing.T) {
|
|
Packit Service |
4d2de5 |
sources := []string{`{
|
|
Packit Service |
4d2de5 |
"name": "package-repo-1",
|
|
Packit Service |
4d2de5 |
"url": "file://REPO-PATH",
|
|
Packit Service |
4d2de5 |
"type": "yum-baseurl",
|
|
Packit Service |
4d2de5 |
"proxy": "https://proxy-url/",
|
|
Packit Service |
4d2de5 |
"check_ssl": true,
|
|
Packit Service |
4d2de5 |
"check_gpg": true,
|
|
Packit Service |
4d2de5 |
"gpgkey_urls": ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
}`,
|
|
Packit Service |
4d2de5 |
`{
|
|
Packit Service |
4d2de5 |
"name": "package-repo-2",
|
|
Packit Service |
4d2de5 |
"url": "file://REPO-PATH",
|
|
Packit Service |
4d2de5 |
"type": "yum-baseurl",
|
|
Packit Service |
4d2de5 |
"proxy": "https://proxy-url/",
|
|
Packit Service |
4d2de5 |
"check_ssl": true,
|
|
Packit Service |
4d2de5 |
"check_gpg": true,
|
|
Packit Service |
4d2de5 |
"gpgkey_urls": ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
}`}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
for i := range sources {
|
|
Packit Service |
4d2de5 |
source := strings.Replace(sources[i], "REPO-PATH", testState.repoDir, 1)
|
|
Packit Service |
4d2de5 |
resp, err := PostJSONSourceV0(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "POST source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Remove the test sources, ignoring any errors
|
|
Packit Service |
4d2de5 |
defer func() {
|
|
Packit Service |
4d2de5 |
for _, n := range []string{"package-repo-1", "package-repo-2"} {
|
|
Packit Service |
4d2de5 |
resp, err := DeleteSourceV0(testState.socket, n)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "DELETE source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "DELETE source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
}()
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Get the list of sources
|
|
Packit Service |
4d2de5 |
list, api, err := ListSourcesV0(testState.socket)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "GET source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.Nil(t, api, "ListSources failed: %#v", api)
|
|
Packit Service |
4d2de5 |
require.True(t, len(list) > 1, "Not enough sources returned")
|
|
Packit Service |
4d2de5 |
require.Contains(t, list, "package-repo-1")
|
|
Packit Service |
4d2de5 |
require.Contains(t, list, "package-repo-2")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// list sources using the v1 API
|
|
Packit Service |
4d2de5 |
func TestListSourcesV1(t *testing.T) {
|
|
Packit Service |
4d2de5 |
sources := []string{`{
|
|
Packit Service |
4d2de5 |
"id": "package-repo-1",
|
|
Packit Service |
4d2de5 |
"name": "First test package repo",
|
|
Packit Service |
4d2de5 |
"url": "file://REPO-PATH",
|
|
Packit Service |
4d2de5 |
"type": "yum-baseurl",
|
|
Packit Service |
4d2de5 |
"proxy": "https://proxy-url/",
|
|
Packit Service |
4d2de5 |
"check_ssl": true,
|
|
Packit Service |
4d2de5 |
"check_gpg": true,
|
|
Packit Service |
4d2de5 |
"gpgkey_urls": ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
}`,
|
|
Packit Service |
4d2de5 |
`{
|
|
Packit Service |
4d2de5 |
"id": "package-repo-2",
|
|
Packit Service |
4d2de5 |
"name": "Second test package repo",
|
|
Packit Service |
4d2de5 |
"url": "file://REPO-PATH",
|
|
Packit Service |
4d2de5 |
"type": "yum-baseurl",
|
|
Packit Service |
4d2de5 |
"proxy": "https://proxy-url/",
|
|
Packit Service |
4d2de5 |
"check_ssl": true,
|
|
Packit Service |
4d2de5 |
"check_gpg": true,
|
|
Packit Service |
4d2de5 |
"gpgkey_urls": ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
}`}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
for i := range sources {
|
|
Packit Service |
4d2de5 |
source := strings.Replace(sources[i], "REPO-PATH", testState.repoDir, 1)
|
|
Packit Service |
4d2de5 |
resp, err := PostJSONSourceV1(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "POST source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Remove the test sources, ignoring any errors
|
|
Packit Service |
4d2de5 |
defer func() {
|
|
Packit Service |
4d2de5 |
for _, n := range []string{"package-repo-1", "package-repo-2"} {
|
|
Packit Service |
4d2de5 |
resp, err := DeleteSourceV1(testState.socket, n)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "DELETE source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "DELETE source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
}()
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Get the list of sources
|
|
Packit Service |
4d2de5 |
list, api, err := ListSourcesV1(testState.socket)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "GET source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.Nil(t, api, "ListSources failed: %#v", api)
|
|
Packit Service |
4d2de5 |
require.True(t, len(list) > 1, "Not enough sources returned")
|
|
Packit Service |
4d2de5 |
require.Contains(t, list, "package-repo-1")
|
|
Packit Service |
4d2de5 |
require.Contains(t, list, "package-repo-2")
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Get the source info using the v0 API
|
|
Packit Service |
4d2de5 |
func TestGetSourceInfoV0(t *testing.T) {
|
|
Packit Service |
4d2de5 |
source := `
|
|
Packit Service |
4d2de5 |
name = "package-repo-info-v0"
|
|
Packit Service |
4d2de5 |
url = "file://REPO-PATH"
|
|
Packit Service |
4d2de5 |
type = "yum-baseurl"
|
|
Packit Service |
4d2de5 |
proxy = "https://proxy-url/"
|
|
Packit Service |
4d2de5 |
check_ssl = true
|
|
Packit Service |
4d2de5 |
check_gpg = true
|
|
Packit Service |
4d2de5 |
gpgkey_urls = ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
`
|
|
Packit Service |
4d2de5 |
source = strings.Replace(source, "REPO-PATH", testState.repoDir, 1)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err := PostTOMLSourceV0(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "POST source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
info, resp, err := GetSourceInfoV0(testState.socket, "package-repo-info-v0")
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "GET source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.Nil(t, resp, "GET source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
require.Contains(t, info, "package-repo-info-v0", "No source info returned")
|
|
Packit Service |
4d2de5 |
require.Equal(t, "package-repo-info-v0", info["package-repo-info-v0"].Name)
|
|
Packit Service |
4d2de5 |
require.Equal(t, "file://"+testState.repoDir, info["package-repo-info-v0"].URL)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err = DeleteSourceV0(testState.socket, "package-repo-info-v0")
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "DELETE source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "DELETE source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Get the source info using the v1 API
|
|
Packit Service |
4d2de5 |
func TestGetSourceInfoV1(t *testing.T) {
|
|
Packit Service |
4d2de5 |
source := `
|
|
Packit Service |
4d2de5 |
id = "package-repo-info-v1"
|
|
Packit Service |
4d2de5 |
name = "repo for info test v1"
|
|
Packit Service |
4d2de5 |
url = "file://REPO-PATH"
|
|
Packit Service |
4d2de5 |
type = "yum-baseurl"
|
|
Packit Service |
4d2de5 |
proxy = "https://proxy-url/"
|
|
Packit Service |
4d2de5 |
check_ssl = true
|
|
Packit Service |
4d2de5 |
check_gpg = true
|
|
Packit Service |
4d2de5 |
gpgkey_urls = ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
`
|
|
Packit Service |
4d2de5 |
source = strings.Replace(source, "REPO-PATH", testState.repoDir, 1)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err := PostTOMLSourceV1(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "POST source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
info, resp, err := GetSourceInfoV1(testState.socket, "package-repo-info-v1")
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "GET source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.Nil(t, resp, "GET source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
require.Contains(t, info, "package-repo-info-v1", "No source info returned")
|
|
Packit Service |
4d2de5 |
require.Equal(t, "repo for info test v1", info["package-repo-info-v1"].Name)
|
|
Packit Service |
4d2de5 |
require.Equal(t, "file://"+testState.repoDir, info["package-repo-info-v1"].URL)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
resp, err = DeleteSourceV1(testState.socket, "package-repo-info-v1")
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "DELETE source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "DELETE source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func UploadUserDefinedSourcesV0(t *testing.T, sources []string) {
|
|
Packit Service |
4d2de5 |
for i := range sources {
|
|
Packit Service |
4d2de5 |
source := strings.Replace(sources[i], "REPO-PATH", testState.repoDir, 1)
|
|
Packit Service |
4d2de5 |
resp, err := PostJSONSourceV0(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "POST source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func UploadUserDefinedSourcesV1(t *testing.T, sources []string) {
|
|
Packit Service |
4d2de5 |
for i := range sources {
|
|
Packit Service |
4d2de5 |
source := strings.Replace(sources[i], "REPO-PATH", testState.repoDir, 1)
|
|
Packit Service |
4d2de5 |
resp, err := PostJSONSourceV1(testState.socket, source)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "POST source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "POST source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// verify user defined sources are not present
|
|
Packit Service |
4d2de5 |
func VerifyNoUserDefinedSourcesV0(t *testing.T, source_names []string) {
|
|
Packit Service |
4d2de5 |
list, api, err := ListSourcesV0(testState.socket)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "GET source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.Nil(t, api, "ListSources failed: %#v", api)
|
|
Packit Service |
4d2de5 |
require.GreaterOrEqual(t, len(list), 1, "Not enough sources returned")
|
|
Packit Service |
4d2de5 |
for i := range source_names {
|
|
Packit Service |
4d2de5 |
require.NotContains(t, list, source_names[i])
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// verify user defined sources are not present
|
|
Packit Service |
4d2de5 |
func VerifyNoUserDefinedSourcesV1(t *testing.T, source_names []string) {
|
|
Packit Service |
4d2de5 |
list, api, err := ListSourcesV1(testState.socket)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "GET source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.Nil(t, api, "ListSources failed: %#v", api)
|
|
Packit Service |
4d2de5 |
require.GreaterOrEqual(t, len(list), 1, "Not enough sources returned")
|
|
Packit Service |
4d2de5 |
for i := range source_names {
|
|
Packit Service |
4d2de5 |
require.NotContains(t, list, source_names[i])
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func TestDeleteUserDefinedSourcesV0(t *testing.T) {
|
|
Packit Service |
4d2de5 |
source_names := []string{"package-repo-1", "package-repo-2"}
|
|
Packit Service |
4d2de5 |
sources := []string{`{
|
|
Packit Service |
4d2de5 |
"name": "package-repo-1",
|
|
Packit Service |
4d2de5 |
"url": "file://REPO-PATH",
|
|
Packit Service |
4d2de5 |
"type": "yum-baseurl",
|
|
Packit Service |
4d2de5 |
"proxy": "https://proxy-url/",
|
|
Packit Service |
4d2de5 |
"check_ssl": true,
|
|
Packit Service |
4d2de5 |
"check_gpg": true,
|
|
Packit Service |
4d2de5 |
"gpgkey_urls": ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
}`,
|
|
Packit Service |
4d2de5 |
`{
|
|
Packit Service |
4d2de5 |
"name": "package-repo-2",
|
|
Packit Service |
4d2de5 |
"url": "file://REPO-PATH",
|
|
Packit Service |
4d2de5 |
"type": "yum-baseurl",
|
|
Packit Service |
4d2de5 |
"proxy": "https://proxy-url/",
|
|
Packit Service |
4d2de5 |
"check_ssl": true,
|
|
Packit Service |
4d2de5 |
"check_gpg": true,
|
|
Packit Service |
4d2de5 |
"gpgkey_urls": ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
}`}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// verify test starts without user defined sources
|
|
Packit Service |
4d2de5 |
VerifyNoUserDefinedSourcesV0(t, source_names)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// post user defined sources
|
|
Packit Service |
4d2de5 |
UploadUserDefinedSourcesV0(t, sources)
|
|
Packit Service |
4d2de5 |
// note: not verifying user defined sources have been pushed b/c correct
|
|
Packit Service |
4d2de5 |
// operation of PostJSONSourceV0 is validated in the test functions above
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Remove the test sources
|
|
Packit Service |
4d2de5 |
for _, n := range source_names {
|
|
Packit Service |
4d2de5 |
resp, err := DeleteSourceV0(testState.socket, n)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "DELETE source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "DELETE source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// verify removed sources are not present after removal
|
|
Packit Service |
4d2de5 |
VerifyNoUserDefinedSourcesV0(t, source_names)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func TestDeleteUserDefinedSourcesV1(t *testing.T) {
|
|
Packit Service |
4d2de5 |
source_names := []string{"package-repo-1", "package-repo-2"}
|
|
Packit Service |
4d2de5 |
sources := []string{`{
|
|
Packit Service |
4d2de5 |
"id": "package-repo-1",
|
|
Packit Service |
4d2de5 |
"name": "First test package repo",
|
|
Packit Service |
4d2de5 |
"url": "file://REPO-PATH",
|
|
Packit Service |
4d2de5 |
"type": "yum-baseurl",
|
|
Packit Service |
4d2de5 |
"proxy": "https://proxy-url/",
|
|
Packit Service |
4d2de5 |
"check_ssl": true,
|
|
Packit Service |
4d2de5 |
"check_gpg": true,
|
|
Packit Service |
4d2de5 |
"gpgkey_urls": ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
}`,
|
|
Packit Service |
4d2de5 |
`{
|
|
Packit Service |
4d2de5 |
"id": "package-repo-2",
|
|
Packit Service |
4d2de5 |
"name": "Second test package repo",
|
|
Packit Service |
4d2de5 |
"url": "file://REPO-PATH",
|
|
Packit Service |
4d2de5 |
"type": "yum-baseurl",
|
|
Packit Service |
4d2de5 |
"proxy": "https://proxy-url/",
|
|
Packit Service |
4d2de5 |
"check_ssl": true,
|
|
Packit Service |
4d2de5 |
"check_gpg": true,
|
|
Packit Service |
4d2de5 |
"gpgkey_urls": ["https://url/path/to/gpg-key"]
|
|
Packit Service |
4d2de5 |
}`}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// verify test starts without user defined sources
|
|
Packit Service |
4d2de5 |
VerifyNoUserDefinedSourcesV1(t, source_names)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// post user defined sources
|
|
Packit Service |
4d2de5 |
UploadUserDefinedSourcesV1(t, sources)
|
|
Packit Service |
4d2de5 |
// note: not verifying user defined sources have been pushed b/c correct
|
|
Packit Service |
4d2de5 |
// operation of PostJSONSourceV0 is validated in the test functions above
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// Remove the test sources
|
|
Packit Service |
4d2de5 |
for _, n := range source_names {
|
|
Packit Service |
4d2de5 |
resp, err := DeleteSourceV1(testState.socket, n)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "DELETE source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.True(t, resp.Status, "DELETE source failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// verify removed sources are not present after removal
|
|
Packit Service |
4d2de5 |
VerifyNoUserDefinedSourcesV0(t, source_names)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func Index(vs []string, t string) int {
|
|
Packit Service |
4d2de5 |
for i, v := range vs {
|
|
Packit Service |
4d2de5 |
if v == t {
|
|
Packit Service |
4d2de5 |
return i
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
return -1
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func Include(vs []string, t string) bool {
|
|
Packit Service |
4d2de5 |
return Index(vs, t) >= 0
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func TestDeleteSystemSourcesV0(t *testing.T) {
|
|
Packit Service |
4d2de5 |
sources_list, api, err := ListSourcesV0(testState.socket)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "GET source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.Nil(t, api, "ListSources failed: %#v", api)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
for _, repo_name := range []string{"test-system-repo", "fedora", "baseos"} {
|
|
Packit Service |
4d2de5 |
// skip repository names which are not present b/c this test can be
|
|
Packit Service |
4d2de5 |
// executed both as a unit test and as an integration test
|
|
Packit Service |
4d2de5 |
if !Include(sources_list, repo_name) {
|
|
Packit Service |
4d2de5 |
continue
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// try removing system source
|
|
Packit Service |
4d2de5 |
resp, err := DeleteSourceV0(testState.socket, repo_name)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "DELETE source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "DELETE system source test failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// verify that system sources are still there
|
|
Packit Service |
4d2de5 |
list, api, err := ListSourcesV0(testState.socket)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "GET source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.Nil(t, api, "ListSources failed: %#v", api)
|
|
Packit Service |
4d2de5 |
require.GreaterOrEqual(t, len(list), 1, "Not enough sources returned")
|
|
Packit Service |
4d2de5 |
require.Contains(t, list, repo_name)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func TestDeleteSystemSourcesV1(t *testing.T) {
|
|
Packit Service |
4d2de5 |
sources_list, api, err := ListSourcesV1(testState.socket)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "GET source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.Nil(t, api, "ListSources failed: %#v", api)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
for _, repo_name := range []string{"test-system-repo", "fedora", "baseos"} {
|
|
Packit Service |
4d2de5 |
// skip repository names which are not present b/c this test can be
|
|
Packit Service |
4d2de5 |
// executed both as a unit test and as an integration test
|
|
Packit Service |
4d2de5 |
if !Include(sources_list, repo_name) {
|
|
Packit Service |
4d2de5 |
continue
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// try removing system source
|
|
Packit Service |
4d2de5 |
resp, err := DeleteSourceV1(testState.socket, repo_name)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "DELETE source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.False(t, resp.Status, "DELETE system source test failed: %#v", resp)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
// verify that system sources are still there
|
|
Packit Service |
4d2de5 |
list, api, err := ListSourcesV1(testState.socket)
|
|
Packit Service |
4d2de5 |
require.NoError(t, err, "GET source failed with a client error")
|
|
Packit Service |
4d2de5 |
require.Nil(t, api, "ListSources failed: %#v", api)
|
|
Packit Service |
4d2de5 |
require.GreaterOrEqual(t, len(list), 1, "Not enough sources returned")
|
|
Packit Service |
4d2de5 |
require.Contains(t, list, repo_name)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
}
|