diff --git a/internal/api/agent/subnet_test.go b/internal/api/agent/subnet_test.go index 36e42f7..1ff067a 100644 --- a/internal/api/agent/subnet_test.go +++ b/internal/api/agent/subnet_test.go @@ -28,7 +28,7 @@ func TestListSubnets_Empty(t *testing.T) { func TestListSubnets_WithData(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "subnet/sn-1/state", "created") + kv.AddInDB(db, "subnet/sn-1/state", "running") kv.AddInDB(db, "subnet/sn-1/vpc", "vpc-1") kv.AddInDB(db, "subnet/sn-2/state", "creating") kv.AddInDB(db, "subnet/sn-2/vpc", "vpc-1") @@ -55,7 +55,7 @@ func TestListSubnets_InvalidMethod(t *testing.T) { func TestPostSubnet_Created(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "vpc/vpc-1/state", "created") + kv.AddInDB(db, "vpc/vpc-1/state", "running") req := SubnetCreateRequest{ Name: "sn-new", VPC: "vpc-1", @@ -91,7 +91,7 @@ func TestPostSubnet_MissingFields(t *testing.T) { func TestPostSubnet_IfaceTypeOptional(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "vpc/vpc-1/state", "created") + kv.AddInDB(db, "vpc/vpc-1/state", "running") req := SubnetCreateRequest{ Name: "sn-opt", VPC: "vpc-1", @@ -126,8 +126,8 @@ func TestPostSubnet_VPCNotFound(t *testing.T) { func TestPostSubnet_Duplicate(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "vpc/vpc-1/state", "created") - kv.AddInDB(db, "subnet/sn-exist/state", "created") + kv.AddInDB(db, "vpc/vpc-1/state", "running") + kv.AddInDB(db, "subnet/sn-exist/state", "running") req := SubnetCreateRequest{ Name: "sn-exist", VPC: "vpc-1", @@ -163,7 +163,7 @@ func TestPostSubnet_VPCDeleting(t *testing.T) { func TestPostSubnet_BridgeMode_Success(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "vpc/vpc-1/state", "created") + kv.AddInDB(db, "vpc/vpc-1/state", "running") req := SubnetCreateRequest{ Name: "sn-br", VPC: "vpc-1", @@ -190,7 +190,7 @@ func TestPostSubnet_BridgeMode_Success(t *testing.T) { func TestPostSubnet_UnknownMode(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "vpc/vpc-1/state", "created") + kv.AddInDB(db, "vpc/vpc-1/state", "running") req := SubnetCreateRequest{ Name: "sn-1", VPC: "vpc-1", @@ -219,7 +219,7 @@ func TestPostSubnet_InvalidBody(t *testing.T) { func TestGetSubnet_Found(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "subnet/sn-1/state", "created") + kv.AddInDB(db, "subnet/sn-1/state", "running") kv.AddInDB(db, "subnet/sn-1/vpc", "vpc-1") kv.AddInDB(db, "subnet/sn-1/cidr", "10.0.0.0/24") kv.AddInDB(db, "subnet/sn-1/interface_ip", "10.0.0.1") @@ -231,7 +231,7 @@ func TestGetSubnet_Found(t *testing.T) { } var result Subnet json.NewDecoder(w.Body).Decode(&result) - if result.Name != "sn-1" || result.State != "created" { + if result.Name != "sn-1" || result.State != "running" { t.Errorf("résultat inattendu : %+v", result) } if result.VPC != "vpc-1" { @@ -261,7 +261,7 @@ func TestGetSubnet_EmptyName(t *testing.T) { func TestDeleteSubnet_Success(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "subnet/sn-del/state", "created") + kv.AddInDB(db, "subnet/sn-del/state", "running") req := httptest.NewRequest(http.MethodDelete, "/subnets/sn-del", nil) w := httptest.NewRecorder() s.SubnetByNameHandler(w, req) @@ -287,7 +287,7 @@ func TestDeleteSubnet_NotFound(t *testing.T) { func TestSubnetByName_InvalidMethod(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "subnet/sn-1/state", "created") + kv.AddInDB(db, "subnet/sn-1/state", "running") req := httptest.NewRequest(http.MethodPut, "/subnets/sn-1", nil) w := httptest.NewRecorder() s.SubnetByNameHandler(w, req) diff --git a/internal/api/agent/vm_test.go b/internal/api/agent/vm_test.go index 3af5968..db8bbd5 100644 --- a/internal/api/agent/vm_test.go +++ b/internal/api/agent/vm_test.go @@ -15,7 +15,7 @@ import ( func TestVmFromDB_SingleDisk(t *testing.T) { entries := map[string]string{ - "vm/vm-1/state": "started", + "vm/vm-1/state": "running", "vm/vm-1/subnet": "sn-1", "vm/vm-1/ip": "10.0.0.5", "vm/vm-1/metadata_port": "1234", @@ -37,7 +37,7 @@ func TestVmFromDB_SingleDisk(t *testing.T) { func TestVmFromDB_MultiDisk(t *testing.T) { entries := map[string]string{ - "vm/vm-2/state": "started", + "vm/vm-2/state": "running", "vm/vm-2/subnet": "sn-1", "vm/vm-2/ip": "10.0.0.6", "vm/vm-2/metadata_port": "1235", @@ -62,7 +62,7 @@ func TestVmFromDB_MultiDisk(t *testing.T) { func TestVmFromDB_SlotGap(t *testing.T) { // sdb absent — sda et sdc seulement entries := map[string]string{ - "vm/vm-3/state": "started", + "vm/vm-3/state": "running", "vm/vm-3/subnet": "sn-1", "vm/vm-3/ip": "10.0.0.7", "vm/vm-3/metadata_port": "1236", @@ -94,7 +94,7 @@ func TestVmFromDB_SlotGap(t *testing.T) { func TestStartVM_MultiDisk(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "subnet/sn-1/state", "created") + kv.AddInDB(db, "subnet/sn-1/state", "running") kv.AddInDB(db, "subnet/sn-1/vpc", "vpc-1") body, _ := json.Marshal(VMCreateRequest{ @@ -128,7 +128,7 @@ func TestStartVM_MultiDisk(t *testing.T) { func TestStartVM_StorageReturnedInResponse(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "subnet/sn-1/state", "created") + kv.AddInDB(db, "subnet/sn-1/state", "running") kv.AddInDB(db, "subnet/sn-1/vpc", "vpc-1") body, _ := json.Marshal(VMCreateRequest{ diff --git a/internal/api/agent/vpc_test.go b/internal/api/agent/vpc_test.go index 3516305..b5ba517 100644 --- a/internal/api/agent/vpc_test.go +++ b/internal/api/agent/vpc_test.go @@ -28,7 +28,7 @@ func TestListVpcs_Empty(t *testing.T) { func TestListVpcs_WithData(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "vpc/v1/state", "created") + kv.AddInDB(db, "vpc/v1/state", "running") kv.AddInDB(db, "vpc/v2/state", "creating") w := httptest.NewRecorder() s.VpcsHandler(w, httptest.NewRequest(http.MethodGet, "/vpcs", nil)) @@ -104,7 +104,7 @@ func TestPostVpc_InvalidCIDR(t *testing.T) { func TestPostVpc_Duplicate(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "vpc/vpc-exist/state", "created") + kv.AddInDB(db, "vpc/vpc-exist/state", "running") body, _ := json.Marshal(VPCCreateRequest{Name: "vpc-exist", CIDR: "10.0.0.0/16"}) w := httptest.NewRecorder() s.VpcsHandler(w, httptest.NewRequest(http.MethodPost, "/vpcs", bytes.NewReader(body))) @@ -126,7 +126,7 @@ func TestPostVpc_InvalidBody(t *testing.T) { func TestGetVpc_Found(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "vpc/vpc-1/state", "created") + kv.AddInDB(db, "vpc/vpc-1/state", "running") req := httptest.NewRequest(http.MethodGet, "/vpcs/vpc-1", nil) w := httptest.NewRecorder() s.VpcByNameHandler(w, req) @@ -135,7 +135,7 @@ func TestGetVpc_Found(t *testing.T) { } var result VPC json.NewDecoder(w.Body).Decode(&result) - if result.Name != "vpc-1" || result.State != "created" { + if result.Name != "vpc-1" || result.State != "running" { t.Errorf("résultat inattendu : %+v", result) } } @@ -162,7 +162,7 @@ func TestGetVpc_EmptyName(t *testing.T) { func TestDeleteVpc_Success(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "vpc/vpc-del/state", "created") + kv.AddInDB(db, "vpc/vpc-del/state", "running") req := httptest.NewRequest(http.MethodDelete, "/vpcs/vpc-del", nil) w := httptest.NewRecorder() s.VpcByNameHandler(w, req) @@ -186,10 +186,37 @@ func TestDeleteVpc_NotFound(t *testing.T) { } } +func TestDeleteVpc_ConflictWhileCreating(t *testing.T) { + s, db := newTestServer(t) + kv.AddInDB(db, "vpc/vpc-wip/state", "creating") + req := httptest.NewRequest(http.MethodDelete, "/vpcs/vpc-wip", nil) + w := httptest.NewRecorder() + s.VpcByNameHandler(w, req) + if w.Code != http.StatusConflict { + t.Errorf("attendu 409, obtenu %d: %s", w.Code, w.Body.String()) + } +} + +func TestDeleteVpc_AllowedFromError(t *testing.T) { + s, db := newTestServer(t) + kv.AddInDB(db, "vpc/vpc-ko/state", "error") + req := httptest.NewRequest(http.MethodDelete, "/vpcs/vpc-ko", nil) + w := httptest.NewRecorder() + s.VpcByNameHandler(w, req) + if w.Code != http.StatusAccepted { + t.Fatalf("attendu 202, obtenu %d: %s", w.Code, w.Body.String()) + } + var result VPC + json.NewDecoder(w.Body).Decode(&result) + if result.State != "deleting" { + t.Errorf("state attendu deleting, obtenu %q", result.State) + } +} + func TestDeleteVpc_BlockedByActiveSubnet(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "vpc/vpc-busy/state", "created") - kv.AddInDB(db, "subnet/sn-1/state", "created") + kv.AddInDB(db, "vpc/vpc-busy/state", "running") + kv.AddInDB(db, "subnet/sn-1/state", "running") kv.AddInDB(db, "subnet/sn-1/vpc", "vpc-busy") req := httptest.NewRequest(http.MethodDelete, "/vpcs/vpc-busy", nil) w := httptest.NewRecorder() @@ -201,7 +228,7 @@ func TestDeleteVpc_BlockedByActiveSubnet(t *testing.T) { func TestVpcByName_InvalidMethod(t *testing.T) { s, db := newTestServer(t) - kv.AddInDB(db, "vpc/vpc-1/state", "created") + kv.AddInDB(db, "vpc/vpc-1/state", "running") req := httptest.NewRequest(http.MethodPut, "/vpcs/vpc-1", nil) w := httptest.NewRecorder() s.VpcByNameHandler(w, req)