// Copyright 2013 Google Inc. All rights reserved. // Use of this source code is governed by the Apache 2.0 // license that can be found in the LICENSE file. package module import ( "reflect" "testing" "github.com/golang/protobuf/proto" "google.golang.org/appengine/internal/aetesting" pb "google.golang.org/appengine/internal/modules" ) const version = "test-version" const module = "test-module" const instances = 3 func TestList(t *testing.T) { c := aetesting.FakeSingleContext(t, "modules", "GetModules", func(req *pb.GetModulesRequest, res *pb.GetModulesResponse) error { res.Module = []string{"default", "mod1"} return nil }) got, err := List(c) if err != nil { t.Fatalf("List: %v", err) } want := []string{"default", "mod1"} if !reflect.DeepEqual(got, want) { t.Errorf("List = %v, want %v", got, want) } } func TestSetNumInstances(t *testing.T) { c := aetesting.FakeSingleContext(t, "modules", "SetNumInstances", func(req *pb.SetNumInstancesRequest, res *pb.SetNumInstancesResponse) error { if *req.Module != module { t.Errorf("Module = %v, want %v", req.Module, module) } if *req.Version != version { t.Errorf("Version = %v, want %v", req.Version, version) } if *req.Instances != instances { t.Errorf("Instances = %v, want %d", req.Instances, instances) } return nil }) err := SetNumInstances(c, module, version, instances) if err != nil { t.Fatalf("SetNumInstances: %v", err) } } func TestVersions(t *testing.T) { c := aetesting.FakeSingleContext(t, "modules", "GetVersions", func(req *pb.GetVersionsRequest, res *pb.GetVersionsResponse) error { if *req.Module != module { t.Errorf("Module = %v, want %v", req.Module, module) } res.Version = []string{"v1", "v2", "v3"} return nil }) got, err := Versions(c, module) if err != nil { t.Fatalf("Versions: %v", err) } want := []string{"v1", "v2", "v3"} if !reflect.DeepEqual(got, want) { t.Errorf("Versions = %v, want %v", got, want) } } func TestDefaultVersion(t *testing.T) { c := aetesting.FakeSingleContext(t, "modules", "GetDefaultVersion", func(req *pb.GetDefaultVersionRequest, res *pb.GetDefaultVersionResponse) error { if *req.Module != module { t.Errorf("Module = %v, want %v", req.Module, module) } res.Version = proto.String(version) return nil }) got, err := DefaultVersion(c, module) if err != nil { t.Fatalf("DefaultVersion: %v", err) } if got != version { t.Errorf("Version = %v, want %v", got, version) } } func TestStart(t *testing.T) { c := aetesting.FakeSingleContext(t, "modules", "StartModule", func(req *pb.StartModuleRequest, res *pb.StartModuleResponse) error { if *req.Module != module { t.Errorf("Module = %v, want %v", req.Module, module) } if *req.Version != version { t.Errorf("Version = %v, want %v", req.Version, version) } return nil }) err := Start(c, module, version) if err != nil { t.Fatalf("Start: %v", err) } } func TestStop(t *testing.T) { c := aetesting.FakeSingleContext(t, "modules", "StopModule", func(req *pb.StopModuleRequest, res *pb.StopModuleResponse) error { version := "test-version" module := "test-module" if *req.Module != module { t.Errorf("Module = %v, want %v", req.Module, module) } if *req.Version != version { t.Errorf("Version = %v, want %v", req.Version, version) } return nil }) err := Stop(c, module, version) if err != nil { t.Fatalf("Stop: %v", err) } }