mock_test.go
package mock
import (
"errors"
"testing"
"github.com/readysite/readysite/pkg/platform"
)
func TestPlatform_Server(t *testing.T) {
p := New()
// Create server
server, err := p.CreateServer(platform.ServerOptions{
Name: "test-server",
Size: platform.Small,
Region: platform.NYC,
Image: "docker-20-04",
})
if err != nil {
t.Fatalf("CreateServer failed: %v", err)
}
if server.ID == "" {
t.Error("expected server ID")
}
if server.Name != "test-server" {
t.Errorf("expected name 'test-server', got '%s'", server.Name)
}
if server.Status != "active" {
t.Errorf("expected status 'active', got '%s'", server.Status)
}
if server.IP == "" {
t.Error("expected server IP")
}
// Get server by name
found, err := p.GetServer("test-server")
if err != nil {
t.Fatalf("GetServer failed: %v", err)
}
if found.ID != server.ID {
t.Errorf("expected ID '%s', got '%s'", server.ID, found.ID)
}
// Get non-existent server
_, err = p.GetServer("non-existent")
if !errors.Is(err, platform.ErrNotFound) {
t.Errorf("expected ErrNotFound, got %v", err)
}
// Delete server
err = p.DeleteServer(server.ID)
if err != nil {
t.Fatalf("DeleteServer failed: %v", err)
}
_, err = p.GetServer("test-server")
if !errors.Is(err, platform.ErrNotFound) {
t.Errorf("expected ErrNotFound, got %v", err)
}
}
func TestPlatform_Volume(t *testing.T) {
p := New()
// Create server for attachment
server, _ := p.CreateServer(platform.ServerOptions{
Name: "test",
Size: platform.Micro,
Region: platform.NYC,
})
// Create volume
volume, err := p.CreateVolume("test-volume", 50, platform.NYC)
if err != nil {
t.Fatalf("CreateVolume failed: %v", err)
}
if volume.ID == "" {
t.Error("expected volume ID")
}
if volume.Size != 50 {
t.Errorf("expected size 50, got %d", volume.Size)
}
// Attach
err = p.AttachVolume(volume.ID, server.ID)
if err != nil {
t.Fatalf("AttachVolume failed: %v", err)
}
// Verify attachment
found, _ := p.GetVolume("test-volume")
if found.ServerID != server.ID {
t.Error("expected volume to be attached")
}
// Detach
err = p.DetachVolume(volume.ID)
if err != nil {
t.Fatalf("DetachVolume failed: %v", err)
}
found, _ = p.GetVolume("test-volume")
if found.ServerID != "" {
t.Error("expected volume to be detached")
}
}
func TestPlatform_DNS(t *testing.T) {
p := New()
// Create DNS zone
zone, err := p.CreateDNSZone("example.com")
if err != nil {
t.Fatalf("CreateDNSZone failed: %v", err)
}
if zone.Name != "example.com" {
t.Errorf("expected name 'example.com', got '%s'", zone.Name)
}
// Get zone
found, err := p.GetDNSZone("example.com")
if err != nil {
t.Fatalf("GetDNSZone failed: %v", err)
}
if found.Name != "example.com" {
t.Errorf("expected name 'example.com', got '%s'", found.Name)
}
// Add record
err = p.AddDNSRecord("example.com", platform.DNSRecord{
Type: "A",
Name: "@",
Value: "1.2.3.4",
TTL: 300,
})
if err != nil {
t.Fatalf("AddDNSRecord failed: %v", err)
}
// Add record to non-existent zone
err = p.AddDNSRecord("nonexistent.com", platform.DNSRecord{
Type: "A",
Name: "@",
Value: "1.2.3.4",
})
if !errors.Is(err, platform.ErrNotFound) {
t.Errorf("expected ErrNotFound, got %v", err)
}
}