...

Source file src/github.com/okta/okta-sdk-golang/v2/tests/integration/feature_test.go

Documentation: github.com/okta/okta-sdk-golang/v2/tests/integration

     1  /*
     2   * Copyright 2018 - Present Okta, Inc.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *      http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    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