...

Source file src/edge-infra.dev/pkg/edge/api/services/iam_settings_service_test.go

Documentation: edge-infra.dev/pkg/edge/api/services

     1  package services
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/DATA-DOG/go-sqlmock"
     8  	"github.com/stretchr/testify/assert"
     9  
    10  	"edge-infra.dev/pkg/edge/api/graph/model"
    11  	sqlquery "edge-infra.dev/pkg/edge/api/sql"
    12  )
    13  
    14  var (
    15  	ownerID    = "f1509671-ba57-42c6-a68e-c72bf7256cd7"
    16  	expireTime = "4320h"
    17  )
    18  
    19  func TestCreateProviderSettings(t *testing.T) {
    20  	ctx := context.Background()
    21  	providerInput := createProvider()
    22  
    23  	db, mock, err1 := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
    24  	if err1 != nil {
    25  		t.Fatalf("an error '%s' was not expected when opening a stub database connection", err1)
    26  	}
    27  	defer db.Close()
    28  
    29  	mock.ExpectBegin()
    30  
    31  	mock.ExpectQuery(sqlquery.GetProviderOwner).
    32  		WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7")
    33  
    34  	mock.ExpectQuery(sqlquery.InsertProviderSettings).
    35  		WithArgs(*providerInput.PinAttempts, *providerInput.PinExpire, *providerInput.PinHistory, *providerInput.PinLength, *providerInput.BarcodeExpire, *providerInput.BarcodePrefix, *providerInput.BarcodeLength, *providerInput.BcryptCost, *providerInput.ProfileExpire).
    36  		WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
    37  
    38  	mock.ExpectExec(sqlquery.InsertProviderOwner).
    39  		WithArgs(ownerID, "f1509671-ba57-42c6-a68e-c72bf7256cd7").
    40  		WillReturnResult(sqlmock.NewResult(1, 1))
    41  
    42  	mock.ExpectCommit()
    43  
    44  	mock.ExpectQuery(sqlquery.GetProviderOwner).
    45  		WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
    46  		WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
    47  
    48  	mock.ExpectQuery(sqlquery.GetProviderSettings).
    49  		WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
    50  		WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
    51  
    52  	iamsettingservice := NewIAMSettingsService(db)
    53  	providerSetting, _ := iamsettingservice.CreateSettings(ctx, ownerID, providerInput)
    54  	assert.Nil(t, providerSetting)
    55  }
    56  func TestDeleteProviderSettings(t *testing.T) {
    57  	ctx := context.Background()
    58  
    59  	db, mock, err1 := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
    60  	if err1 != nil {
    61  		t.Fatalf("an error '%s' was not expected when opening a stub database connection", err1)
    62  	}
    63  	defer db.Close()
    64  
    65  	mock.ExpectQuery(sqlquery.GetProviderOwner).
    66  		WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
    67  		WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
    68  
    69  	mock.ExpectQuery(sqlquery.GetProviderSettings).
    70  		WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
    71  		WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
    72  
    73  	mock.ExpectQuery(sqlquery.GetProviderOwner).
    74  		WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
    75  		WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
    76  
    77  	mock.ExpectQuery(sqlquery.DeleteProviderSettings).
    78  		WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
    79  		WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
    80  
    81  	mock.ExpectQuery(sqlquery.DeleteProviderOwner).
    82  		WithArgs("f1509671-ba57-42c6-a68e-c72bf7256cd7").
    83  		WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
    84  
    85  	iamsettingservice := NewIAMSettingsService(db)
    86  	deleteSetting, _ := iamsettingservice.DeleteSettings(ctx, ownerID)
    87  	assert.Nil(t, deleteSetting)
    88  }
    89  
    90  func TestUpdateProviderSettings(t *testing.T) {
    91  	ctx := context.Background()
    92  	providerInput := createProvider()
    93  
    94  	db, mock, err1 := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
    95  	if err1 != nil {
    96  		t.Fatalf("an error '%s' was not expected when opening a stub database connection", err1)
    97  	}
    98  	defer db.Close()
    99  
   100  	providerSettingsRows := sqlmock.NewRows([]string{"provider_settings_edge_id", "pin_attempts", "pin_expire", "pin_history", "pin_length", "barcode_expire", "barcode_prefix", "barcode_length", "bcrypt_cost", "profile_expire"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7", 6, "4320h", 6, 6, "4320h", "temp", 12, 5, "4320h")
   101  	providerOwnerRows := sqlmock.NewRows([]string{"provider_owner_edge_id", "tenant_edge_id", "banner_edge_id", "provider_settings_edge_id"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7", "f1509671-ba57-42c6-a68e-c72bf7256cd7", ownerID, "f1509671-ba57-42c6-a68e-c72bf7256cd7")
   102  
   103  	mock.ExpectQuery(sqlquery.GetProviderOwner).
   104  		WithArgs(ownerID).
   105  		WillReturnRows(providerOwnerRows)
   106  
   107  	mock.ExpectExec(sqlquery.UpdatePinAttempts).
   108  		WithArgs(9, "f1509671-ba57-42c6-a68e-c72bf7256cd7").
   109  		WillReturnResult(sqlmock.NewResult(1, 1))
   110  
   111  	mock.ExpectQuery(sqlquery.GetProviderOwner).
   112  		WithArgs(ownerID).
   113  		WillReturnRows(providerOwnerRows)
   114  
   115  	mock.ExpectQuery(sqlquery.GetProviderSettings).
   116  		WithArgs(ownerID).
   117  		WillReturnRows(providerSettingsRows.AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7", 9, "4320h", 6, 6, "4320h", "temp", 12, 5, "4320h"))
   118  
   119  	iamsettingservice := NewIAMSettingsService(db)
   120  	updateSetting, _ := iamsettingservice.UpdateSettings(ctx, ownerID, providerInput)
   121  	assert.Nil(t, updateSetting)
   122  }
   123  
   124  func TestGetProviderSettings(t *testing.T) {
   125  	ctx := context.Background()
   126  
   127  	db, mock, err1 := sqlmock.New(sqlmock.QueryMatcherOption(sqlmock.QueryMatcherEqual))
   128  	if err1 != nil {
   129  		t.Fatalf("an error '%s' was not expected when opening a stub database connection", err1)
   130  	}
   131  	defer db.Close()
   132  
   133  	providerSettingsRows := sqlmock.NewRows([]string{"provider_settings_edge_id", "pin_attempts", "pin_expire", "pin_history", "pin_length", "barcode_expire", "barcode_prefix", "barcode_length", "bcrypt_cost", "profile_expire"})
   134  
   135  	mock.ExpectQuery(sqlquery.GetProviderOwner).
   136  		WithArgs(ownerID).
   137  		WillReturnRows(sqlmock.NewRows([]string{"providerSettingsID"}).AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7"))
   138  
   139  	mock.ExpectQuery(sqlquery.GetProviderSettings).
   140  		WithArgs(ownerID).
   141  		WillReturnRows(providerSettingsRows.AddRow("f1509671-ba57-42c6-a68e-c72bf7256cd7", 9, "4320h", 6, 6, "4320h", "temp", 12, 5, "4320h"))
   142  
   143  	iamsettingservice := NewIAMSettingsService(db)
   144  	providerSetting, _ := iamsettingservice.GetSettings(ctx, ownerID)
   145  	assert.NotNil(t, providerSetting)
   146  }
   147  
   148  func createProvider() model.ProviderInput {
   149  	pinAttempts := 6
   150  	pinExpire := expireTime
   151  	pinHistory := 6
   152  	pinLength := 6
   153  	barcodeExpire := expireTime
   154  	barcodePrefix := "temp"
   155  	barcodeLength := 12
   156  	bcryptCost := 5
   157  	profileExpire := expireTime
   158  
   159  	providerInput := model.ProviderInput{
   160  		PinAttempts:   &pinAttempts,
   161  		PinExpire:     &pinExpire,
   162  		PinHistory:    &pinHistory,
   163  		PinLength:     &pinLength,
   164  		BarcodeExpire: &barcodeExpire,
   165  		BarcodePrefix: &barcodePrefix,
   166  		BarcodeLength: &barcodeLength,
   167  		BcryptCost:    &bcryptCost,
   168  		ProfileExpire: &profileExpire,
   169  	}
   170  
   171  	return providerInput
   172  }
   173  

View as plain text