package main

import (
	"os/exec"
	"strings"
	"testing"
)

// search for repos named  "registry" on the central registry
func TestSearchOnCentralRegistry(t *testing.T) {
	testRequires(t, Network)
	searchCmd := exec.Command(dockerBinary, "search", "busybox")
	out, exitCode, err := runCommandWithOutput(searchCmd)
	if err != nil || exitCode != 0 {
		t.Fatalf("failed to search on the central registry: %s, %v", out, err)
	}

	if !strings.Contains(out, "Busybox base image.") {
		t.Fatal("couldn't find any repository named (or containing) 'Busybox base image.'")
	}

	logDone("search - search for repositories named (or containing) 'Busybox base image.'")
}

func TestSearchStarsOptionWithWrongParameter(t *testing.T) {
	searchCmdStarsChars := exec.Command(dockerBinary, "search", "--stars=a", "busybox")
	out, exitCode, err := runCommandWithOutput(searchCmdStarsChars)
	if err == nil || exitCode == 0 {
		t.Fatalf("Should not get right information: %s, %v", out, err)
	}

	if !strings.Contains(out, "invalid value") {
		t.Fatal("couldn't find the invalid value warning")
	}

	searchCmdStarsNegativeNumber := exec.Command(dockerBinary, "search", "-s=-1", "busybox")
	out, exitCode, err = runCommandWithOutput(searchCmdStarsNegativeNumber)
	if err == nil || exitCode == 0 {
		t.Fatalf("Should not get right information: %s, %v", out, err)
	}

	if !strings.Contains(out, "invalid value") {
		t.Fatal("couldn't find the invalid value warning")
	}

	logDone("search - Verify search with wrong parameter.")
}