1// Copyright 2012-present Oliver Eilhard. All rights reserved.
2// Use of this source code is governed by a MIT-license.
3// See http://olivere.mit-license.org/license.txt for details.
4
5package elastic
6
7import (
8	"context"
9	"testing"
10)
11
12func TestXPackIlmPolicyLifecycle(t *testing.T) {
13	client := setupTestClient(t, SetURL("http://elastic:elastic@localhost:9210"))
14
15	testPolicyName := "test-policy"
16
17	body := `{
18		"policy": {
19			"phases": {
20				"delete": {
21					"min_age": "20m",
22					"actions": {
23						"delete": {}
24					}
25				}
26			}
27		}
28	}`
29
30	// Create the policy
31	putilm, err := client.XPackIlmPutLifecycle().Policy(testPolicyName).BodyString(body).Do(context.TODO())
32	if err != nil {
33		t.Fatalf("expected put lifecycle to succeed; got: %v", err)
34	}
35	if putilm == nil {
36		t.Fatalf("expected put lifecycle response; got: %v", putilm)
37	}
38	if !putilm.Acknowledged {
39		t.Fatalf("expected put lifecycle ack; got: %v", putilm.Acknowledged)
40	}
41
42	// Get the policy
43	getilm, err := client.XPackIlmGetLifecycle().Policy(testPolicyName).Do(context.TODO())
44	if err != nil {
45		t.Fatalf("expected get lifecycle to succeed; got: %v", err)
46	}
47	if getilm == nil {
48		t.Fatalf("expected get lifecycle response; got: %v", getilm)
49	}
50
51	// Check the policy exists
52	_, found := getilm[testPolicyName]
53	if !found {
54		t.Fatalf("expected to get policy for %q", testPolicyName)
55	}
56
57	// Delete the policy
58	delilm, err := client.XPackIlmDeleteLifecycle().Policy(testPolicyName).Do(context.TODO())
59	if err != nil {
60		t.Fatalf("expected deletelifecycle to succeed; got: %v", err)
61	}
62	if delilm == nil {
63		t.Fatalf("expected delete lifecycle response; got: %v", delilm)
64	}
65	if !delilm.Acknowledged {
66		t.Fatalf("expected delete lifecycle ack; got: %v", delilm.Acknowledged)
67	}
68
69	// Get the policy
70	getilm, err = client.XPackIlmGetLifecycle().Policy(testPolicyName).Do(context.TODO())
71	if err == nil {
72		t.Fatalf("expected lifecycle to be deleted; got: %v", getilm)
73	}
74}
75