Blame internal/client/source_test.go

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