1
16
17 package integration
18
19 import (
20 "context"
21 "testing"
22
23 "github.com/okta/okta-sdk-golang/v2/okta"
24 "github.com/okta/okta-sdk-golang/v2/tests"
25
26 "github.com/stretchr/testify/assert"
27 "github.com/stretchr/testify/require"
28 )
29
30 func Test_can_list_all_features_for_organization(t *testing.T) {
31 ctx, client, err := tests.NewClient(context.TODO())
32 require.NoError(t, err)
33
34 features, response, err := client.Feature.ListFeatures(ctx)
35
36 require.NoError(t, err, "listing features must not error")
37 require.IsType(t, &okta.Response{}, response, "did not return `*okta.Response` type as second variable")
38 require.IsType(t, []*okta.Feature{}, features, "did not return `[]*okta.Feature` as first variable")
39 assert.Equal(t, "GET", response.Response.Request.Method, "did not make a get request")
40 assert.Equal(t, "/api/v1/features", response.Response.Request.URL.Path, "path for request was incorrect")
41
42 assert.NotEmpty(t, features, "listing features result should not be empty")
43
44 assert.NotEmpty(t, features[0].Description, "description should not be empty")
45 assert.NotEmpty(t, features[0].Id, "id should not be empty")
46 assert.NotEmpty(t, features[0].Name, "name should not be empty")
47 assert.NotEmpty(t, features[0].Stage, "stage should not be empty")
48 assert.NotEmpty(t, features[0].Status, "status should not be empty")
49 assert.NotEmpty(t, features[0].Type, "type should not be empty")
50 }
51
52 func Test_can_get_a_feature(t *testing.T) {
53 ctx, client, err := tests.NewClient(context.TODO())
54 require.NoError(t, err)
55
56 features, _, err := client.Feature.ListFeatures(ctx)
57 require.NoError(t, err, "listing features must not error")
58
59 firstFeatureId := features[0].Id
60 feature, response, err := client.Feature.GetFeature(ctx, firstFeatureId)
61
62 require.NoError(t, err, "getting a feature must not error")
63 require.IsType(t, &okta.Response{}, response, "did not return `*okta.Response` type as second variable")
64 require.IsType(t, &okta.Feature{}, feature, "did not return `okta.Feature` as first variable")
65 assert.Equal(t, "GET", response.Response.Request.Method, "did not make a get request")
66 assert.Equal(t, "/api/v1/features/"+firstFeatureId, response.Response.Request.URL.Path, "path for request was incorrect")
67
68 assert.NotEmpty(t, feature, "listing features result should not be empty")
69
70 assert.NotEmpty(t, feature.Description, "description should not be empty")
71 assert.NotEmpty(t, feature.Id, "id should not be empty")
72 assert.NotEmpty(t, feature.Name, "name should not be empty")
73 assert.NotEmpty(t, feature.Stage, "stage should not be empty")
74 assert.NotEmpty(t, feature.Status, "status should not be empty")
75 assert.NotEmpty(t, feature.Type, "type should not be empty")
76 }
77
78 func Test_can_get_feature_dependencies(t *testing.T) {
79 ctx, client, err := tests.NewClient(context.TODO())
80 require.NoError(t, err)
81
82 features, _, err := client.Feature.ListFeatures(ctx)
83 require.NoError(t, err, "listing features must not error")
84
85 firstFeatureId := features[0].Id
86 featureDependencies, response, err := client.Feature.ListFeatureDependencies(ctx, firstFeatureId)
87
88 require.NoError(t, err, "getting a features dependencies must not error")
89 require.IsType(t, &okta.Response{}, response, "did not return `*okta.Response` type as second variable")
90 require.IsType(t, []*okta.Feature{}, featureDependencies, "did not return `[]*okta.Feature` as first variable")
91 assert.Equal(t, "GET", response.Response.Request.Method, "did not make a get request")
92 assert.Equal(t, "/api/v1/features/"+firstFeatureId+"/dependencies", response.Response.Request.URL.Path, "path for request was incorrect")
93 }
94
95 func Test_can_get_feature_dependants(t *testing.T) {
96 ctx, client, err := tests.NewClient(context.TODO())
97 require.NoError(t, err)
98
99 features, _, err := client.Feature.ListFeatures(ctx)
100 require.NoError(t, err, "listing features must not error")
101
102 firstFeatureId := features[0].Id
103 featureDependants, response, err := client.Feature.ListFeatureDependents(ctx, firstFeatureId)
104
105 require.NoError(t, err, "getting a features dependants must not error")
106 require.IsType(t, &okta.Response{}, response, "did not return `*okta.Response` type as second variable")
107 require.IsType(t, []*okta.Feature{}, featureDependants, "did not return `[]*okta.Feature` as first variable")
108 assert.Equal(t, "GET", response.Response.Request.Method, "did not make a get request")
109 assert.Equal(t, "/api/v1/features/"+firstFeatureId+"/dependents", response.Response.Request.URL.Path, "path for request was incorrect")
110 }
111
112 func Test_can_update_a_feature_lifecycle(t *testing.T) {
113 ctx, client, err := tests.NewClient(context.TODO())
114 require.NoError(t, err)
115
116 features, _, err := client.Feature.ListFeatures(ctx)
117 require.NoError(t, err, "listing features must not error")
118
119 firstFeatureId := features[0].Id
120 origStatus := features[0].Status
121 statusTo := "disable"
122 if origStatus == "DISABLED" {
123 statusTo = "enable"
124 }
125 statusChange, response, err := client.Feature.UpdateFeatureLifecycle(ctx, firstFeatureId, statusTo, nil)
126
127 require.NoError(t, err, "updating feature status should not error")
128 require.IsType(t, &okta.Response{}, response, "did not return `*okta.Response` type as second variable")
129 require.IsType(t, &okta.Feature{}, statusChange, "did not return `[]*okta.Feature` as first variable")
130 assert.Equal(t, "POST", response.Response.Request.Method, "did not make a get request")
131 assert.Equal(t, "/api/v1/features/"+firstFeatureId+"/"+statusTo, response.Response.Request.URL.Path, "path for request was incorrect")
132 assert.NotEqual(t, origStatus, statusChange.Status, "did not change the status")
133
134 toOrigStatus := "enable"
135 if origStatus == "DISABLED" {
136 toOrigStatus = "disable"
137 }
138 updatedStatusChange, response, err := client.Feature.UpdateFeatureLifecycle(ctx, firstFeatureId, toOrigStatus, nil)
139 require.NoError(t, err, "updating feature status should not error")
140 assert.Equal(t, origStatus, updatedStatusChange.Status, "did not change the status back")
141 assert.Equal(t, "/api/v1/features/"+firstFeatureId+"/"+toOrigStatus, response.Response.Request.URL.Path, "path for request was incorrect")
142 }
143
View as plain text