// Copyright 2021 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package main

import (
	"bytes"
	"context"
	"log"
	"net"
	"testing"

	"go.chromium.org/chromiumos/config/go/build/api"
	"google.golang.org/grpc"
)

// MetadataServer handles empty GetDeviceConfig
func TestMetadataServer_GetDeviceConfig_Empty(t *testing.T) {
	var logBuf bytes.Buffer
	l, err := net.Listen("tcp", ":0")
	if err != nil {
		t.Fatal("Failed to create a net listener: ", err)
	}

	ctx := context.Background()
	srv, err := newMetadataServer(
		l,
		log.New(&logBuf, "", log.LstdFlags|log.LUTC),
	)
	if err != nil {
		t.Fatalf("Failed to start MetadataServer: %v", err)
	}
	go srv.Serve(l)
	defer srv.Stop()

	conn, err := grpc.Dial(l.Addr().String(), grpc.WithInsecure())
	if err != nil {
		t.Fatalf("Failed to dial: %v", err)
	}
	defer conn.Close()

	cl := api.NewMetadataServiceClient(conn)
	response, err := cl.GetDeviceConfig(ctx, &api.GetDeviceConfigRequest{})
	if err != nil {
		t.Fatalf("Failed at MetadataServer.GetDeviceConfig: %v", err)
	}
	if err != nil {
		t.Fatalf("Failed at get response: %v", err)
	}

	if response == nil {
		t.Fatalf("Failed to handle empty request")
	}
}
