// Performs basic tests on CA functionality func TestBackend_basic(t *testing.T) { defaultLeaseTTLVal := time.Hour * 24 maxLeaseTTLVal := time.Hour * 24 * 30 b, err := Factory(&logical.BackendConfig{ Logger: nil, System: &logical.StaticSystemView{ DefaultLeaseTTLVal: defaultLeaseTTLVal, MaxLeaseTTLVal: maxLeaseTTLVal, }, }) if err != nil { t.Fatalf("Unable to create backend: %s", err) } testCase := logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{}, } stepCount += len(testCase.Steps) testCase.Steps = append(testCase.Steps, generateCASteps(t)...) logicaltest.Test(t, testCase) }
func TestBackend_basic(t *testing.T) { b := factory(t) logicaltest.Test(t, logicaltest.TestCase{ AcceptanceTest: true, Backend: b, Steps: []logicaltest.TestStep{ testAccStepConfigUrl(t), // Map Scientists group (from LDAP server) with foo policy testAccStepGroup(t, "Scientists", "foo"), // Map engineers group (local) with bar policy testAccStepGroup(t, "engineers", "bar"), // Map tesla user with local engineers group testAccStepUser(t, "tesla", "engineers"), // Authenticate testAccStepLogin(t, "tesla", "password"), // Verify both groups mappings can be listed back testAccStepGroupList(t, []string{"engineers", "Scientists"}), // Verify user mapping can be listed back testAccStepUserList(t, []string{"tesla"}), }, }) }
// Test a client trusted by a CA func TestBackend_basic_CA(t *testing.T) { connState := testConnState(t, "../../../test/key/ourdomain.cer", "../../../test/key/ourdomain.key") ca, err := ioutil.ReadFile("../../../test/ca/root.cer") if err != nil { t.Fatalf("err: %v", err) } b, err := Factory(&logical.BackendConfig{ System: &logical.StaticSystemView{ DefaultLeaseTTLVal: 300 * time.Second, MaxLeaseTTLVal: 1800 * time.Second, }, }) logicaltest.Test(t, logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{ testAccStepCert(t, "web", ca, "foo"), testAccStepLogin(t, connState), testAccStepCertTTL(t, "web", ca, "foo"), testAccStepLogin(t, connState), testAccStepCertNoLease(t, "web", ca, "foo"), testAccStepLoginDefaultLease(t, connState), }, }) }
func TestBackend_rotation(t *testing.T) { decryptData := make(map[string]interface{}) encryptHistory := make(map[int]map[string]interface{}) logicaltest.Test(t, logicaltest.TestCase{ Factory: Factory, Steps: []logicaltest.TestStep{ testAccStepListPolicy(t, "test", true), testAccStepWritePolicy(t, "test", false), testAccStepListPolicy(t, "test", false), testAccStepEncryptVX(t, "test", testPlaintext, decryptData, 0, encryptHistory), testAccStepEncryptVX(t, "test", testPlaintext, decryptData, 1, encryptHistory), testAccStepRotate(t, "test"), // now v2 testAccStepEncryptVX(t, "test", testPlaintext, decryptData, 2, encryptHistory), testAccStepRotate(t, "test"), // now v3 testAccStepEncryptVX(t, "test", testPlaintext, decryptData, 3, encryptHistory), testAccStepRotate(t, "test"), // now v4 testAccStepEncryptVX(t, "test", testPlaintext, decryptData, 4, encryptHistory), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepEncryptVX(t, "test", testPlaintext, decryptData, 99, encryptHistory), testAccStepDecryptExpectFailure(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 0, encryptHistory), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 1, encryptHistory), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 2, encryptHistory), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 3, encryptHistory), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 99, encryptHistory), testAccStepDecryptExpectFailure(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 4, encryptHistory), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepDeleteNotDisabledPolicy(t, "test"), testAccStepAdjustPolicy(t, "test", 3), testAccStepLoadVX(t, "test", decryptData, 0, encryptHistory), testAccStepDecryptExpectFailure(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 1, encryptHistory), testAccStepDecryptExpectFailure(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 2, encryptHistory), testAccStepDecryptExpectFailure(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 3, encryptHistory), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 4, encryptHistory), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepAdjustPolicy(t, "test", 1), testAccStepLoadVX(t, "test", decryptData, 0, encryptHistory), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 1, encryptHistory), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepLoadVX(t, "test", decryptData, 2, encryptHistory), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepRewrap(t, "test", decryptData, 4), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepEnableDeletion(t, "test"), testAccStepDeletePolicy(t, "test"), testAccStepReadPolicy(t, "test", true, false), testAccStepListPolicy(t, "test", true), }, }) }
// Test CRL behavior func TestBackend_Basic_CRLs(t *testing.T) { connState := testConnState(t, "test-fixtures/keys/cert.pem", "test-fixtures/keys/key.pem", "test-fixtures/root/rootcacert.pem") ca, err := ioutil.ReadFile("test-fixtures/root/rootcacert.pem") if err != nil { t.Fatalf("err: %v", err) } crl, err := ioutil.ReadFile("test-fixtures/root/root.crl") if err != nil { t.Fatalf("err: %v", err) } logicaltest.Test(t, logicaltest.TestCase{ AcceptanceTest: true, Backend: testFactory(t), Steps: []logicaltest.TestStep{ testAccStepCertNoLease(t, "web", ca, "foo"), testAccStepLoginDefaultLease(t, connState), testAccStepAddCRL(t, crl, connState), testAccStepReadCRL(t, connState), testAccStepLoginInvalid(t, connState), testAccStepDeleteCRL(t, connState), testAccStepLoginDefaultLease(t, connState), }, }) }
func TestBackend_configConnection(t *testing.T) { b := Backend() d1 := map[string]interface{}{ "value": os.Getenv("MYSQL_DSN"), } d2 := map[string]interface{}{ "connection_url": os.Getenv("MYSQL_DSN"), } d3 := map[string]interface{}{ "value": os.Getenv("MYSQL_DSN"), "connection_url": os.Getenv("MYSQL_DSN"), } d4 := map[string]interface{}{} logicaltest.Test(t, logicaltest.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Backend: b, Steps: []logicaltest.TestStep{ testAccStepConfig(t, d1, false), testAccStepConfig(t, d2, false), testAccStepConfig(t, d3, false), testAccStepConfig(t, d4, true), }, }) }
// Generates and tests steps that walk through the various possibilities // of role flags to ensure that they are properly restricted func TestBackend_roles(t *testing.T) { b, err := Factory(&logical.BackendConfig{ Logger: nil, System: &logical.StaticSystemView{ DefaultLeaseTTLVal: time.Hour * 24, MaxLeaseTTLVal: time.Hour * 24 * 30, }, }) if err != nil { t.Fatalf("Unable to create backend: %s", err) } testCase := logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{}, } testCase.Steps = append(testCase.Steps, generateCASteps(t)...) testCase.Steps = append(testCase.Steps, generateRoleSteps(t)...) if len(os.Getenv("VAULT_VERBOSE_PKITESTS")) > 0 { for i, v := range testCase.Steps { fmt.Printf("Step %d:\n%+v\n\n", i+stepCount, v) } } stepCount += len(testCase.Steps) logicaltest.Test(t, testCase) }
func TestBackend_basic(t *testing.T) { b, _ := Factory(logical.TestBackendConfig()) d1 := map[string]interface{}{ "connection_url": os.Getenv("PG_URL"), } d2 := map[string]interface{}{ "value": os.Getenv("PG_URL"), } logicaltest.Test(t, logicaltest.TestCase{ AcceptanceTest: true, PreCheck: func() { testAccPreCheck(t) }, Backend: b, Steps: []logicaltest.TestStep{ testAccStepConfig(t, d1, false), testAccStepRole(t), testAccStepReadCreds(t, b, "web"), testAccStepConfig(t, d2, false), testAccStepRole(t), testAccStepReadCreds(t, b, "web"), }, }) }
func TestBackend_policiesUpdate(t *testing.T) { b, err := Factory(&logical.BackendConfig{ Logger: nil, System: &logical.StaticSystemView{ DefaultLeaseTTLVal: testSysTTL, MaxLeaseTTLVal: testSysMaxTTL, }, }) if err != nil { t.Fatalf("Unable to create backend: %s", err) } logicaltest.Test(t, logicaltest.TestCase{ AcceptanceTest: true, Backend: b, Steps: []logicaltest.TestStep{ testAccStepUser(t, "web", "password", "foo"), testAccStepReadUser(t, "web", "foo"), testAccStepLogin(t, "web", "password", []string{"default", "foo"}), testUpdatePolicies(t, "web", "foo,bar"), testAccStepReadUser(t, "web", "foo,bar"), testAccStepLogin(t, "web", "password", []string{"bar", "default", "foo"}), }, }) }
func TestBackend_management(t *testing.T) { config := logical.TestBackendConfig() config.StorageView = &logical.InmemStorage{} b, err := Factory(config) if err != nil { t.Fatal(err) } cid, connURL := prepareTestContainer(t, config.StorageView, b) if cid != "" { defer cleanupTestContainer(t, cid) } connData := map[string]interface{}{ "address": connURL, "token": dockertest.ConsulACLMasterToken, } logicaltest.Test(t, logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{ testAccStepConfig(t, connData), testAccStepWriteManagementPolicy(t, "test", ""), testAccStepReadManagementToken(t, "test", connData), }, }) }
func TestBackend_roleCrud(t *testing.T) { config := logical.TestBackendConfig() config.StorageView = &logical.InmemStorage{} b, err := Factory(config) if err != nil { t.Fatal(err) } cid, connURI := prepareTestContainer(t, config.StorageView, b) if cid != "" { defer cleanupTestContainer(t, cid) } connData := map[string]interface{}{ "uri": connURI, } logicaltest.Test(t, logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{ testAccStepConfig(connData, false), testAccStepRole(), testAccStepReadRole("web", testDb, testMongoDBRoles), testAccStepDeleteRole("web"), testAccStepReadRole("web", "", ""), }, }) }
func TestBackend_basic(t *testing.T) { decryptData := make(map[string]interface{}) logicaltest.Test(t, logicaltest.TestCase{ Factory: Factory, Steps: []logicaltest.TestStep{ testAccStepListPolicy(t, "test", true), testAccStepWritePolicy(t, "test", false), testAccStepListPolicy(t, "test", false), testAccStepReadPolicy(t, "test", false, false), testAccStepEncrypt(t, "test", testPlaintext, decryptData), testAccStepDecrypt(t, "test", testPlaintext, decryptData), testAccStepEncrypt(t, "test", "", decryptData), testAccStepDecrypt(t, "test", "", decryptData), testAccStepDeleteNotDisabledPolicy(t, "test"), testAccStepEnableDeletion(t, "test"), testAccStepDeletePolicy(t, "test"), testAccStepWritePolicy(t, "test", false), testAccStepEnableDeletion(t, "test"), testAccStepDisableDeletion(t, "test"), testAccStepDeleteNotDisabledPolicy(t, "test"), testAccStepEnableDeletion(t, "test"), testAccStepDeletePolicy(t, "test"), testAccStepReadPolicy(t, "test", true, false), }, }) }
func TestBackend_roleCrud(t *testing.T) { config := logical.TestBackendConfig() config.StorageView = &logical.InmemStorage{} b, err := Factory(config) if err != nil { t.Fatal(err) } cid, connURL := prepareTestContainer(t, config.StorageView, b) if cid != "" { defer cleanupTestContainer(t, cid) } connData := map[string]interface{}{ "connection_url": connURL, } logicaltest.Test(t, logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{ testAccStepConfig(t, connData, false), // test SQL with wildcard based user testAccStepRole(t, true), testAccStepReadRole(t, "web", testRoleWildCard), testAccStepDeleteRole(t, "web"), // test SQL with host based user testAccStepRole(t, false), testAccStepReadRole(t, "web", testRoleHost), testAccStepDeleteRole(t, "web"), }, }) }
func TestBackend_leaseWriteRead(t *testing.T) { config := logical.TestBackendConfig() config.StorageView = &logical.InmemStorage{} b, err := Factory(config) if err != nil { t.Fatal(err) } cid, connURL := prepareTestContainer(t, config.StorageView, b) if cid != "" { defer cleanupTestContainer(t, cid) } connData := map[string]interface{}{ "connection_url": connURL, } logicaltest.Test(t, logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{ testAccStepConfig(t, connData, false), testAccStepWriteLease(t), testAccStepReadLease(t), }, }) }
func TestBackend_BlockStatements(t *testing.T) { config := logical.TestBackendConfig() config.StorageView = &logical.InmemStorage{} b, err := Factory(config) if err != nil { t.Fatal(err) } cid, connURL := prepareTestContainer(t, config.StorageView, b) if cid != "" { defer cleanupTestContainer(t, cid) } connData := map[string]interface{}{ "connection_url": connURL, } jsonBlockStatement, err := json.Marshal(testBlockStatementRoleSlice) if err != nil { t.Fatal(err) } logicaltest.Test(t, logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{ testAccStepConfig(t, connData, false), // This will also validate the query testAccStepCreateRole(t, "web-block", testBlockStatementRole, true), testAccStepCreateRole(t, "web-block", string(jsonBlockStatement), false), }, }) }
func TestBackend_basic(t *testing.T) { defaultLeaseTTLVal := time.Hour * 24 maxLeaseTTLVal := time.Hour * 24 * 30 b, err := Factory(&logical.BackendConfig{ Logger: nil, System: &logical.StaticSystemView{ DefaultLeaseTTLVal: defaultLeaseTTLVal, MaxLeaseTTLVal: maxLeaseTTLVal, }, }) if err != nil { t.Fatalf("Unable to create backend: %s", err) } logicaltest.Test(t, logicaltest.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Backend: b, Steps: []logicaltest.TestStep{ testAccStepConfig(t), testAccMap(t, "default", "root"), testAccMap(t, "oWnErs", "root"), testAccLogin(t, []string{"root"}), testAccStepConfigWithBaseURL(t), testAccMap(t, "default", "root"), testAccMap(t, "oWnErs", "root"), testAccLogin(t, []string{"root"}), }, }) }
func TestSSHBackend_ConfigZeroAddressCRUD(t *testing.T) { req1 := map[string]interface{}{ "roles": testOTPRoleName, } resp1 := map[string]interface{}{ "roles": []string{testOTPRoleName}, } req2 := map[string]interface{}{ "roles": fmt.Sprintf("%s,%s", testOTPRoleName, testDynamicRoleName), } resp2 := map[string]interface{}{ "roles": []string{testOTPRoleName, testDynamicRoleName}, } resp3 := map[string]interface{}{ "roles": []string{}, } logicaltest.Test(t, logicaltest.TestCase{ Factory: Factory, Steps: []logicaltest.TestStep{ testRoleWrite(t, testOTPRoleName, testOTPRoleData), testConfigZeroAddressWrite(t, req1), testConfigZeroAddressRead(t, resp1), testNamedKeysWrite(t, testKeyName, testSharedPrivateKey), testRoleWrite(t, testDynamicRoleName, testDynamicRoleData), testConfigZeroAddressWrite(t, req2), testConfigZeroAddressRead(t, resp2), testRoleDelete(t, testDynamicRoleName), testConfigZeroAddressRead(t, resp1), testRoleDelete(t, testOTPRoleName), testConfigZeroAddressRead(t, resp3), testConfigZeroAddressDelete(t), }, }) }
func TestSSHBackend_Lookup(t *testing.T) { data := map[string]interface{}{ "ip": testIP, } otpData := map[string]interface{}{ "key_type": testOTPKeyType, "default_user": testUserName, "cidr_list": testCIDRList, } dynamicData := map[string]interface{}{ "key_type": testDynamicKeyType, "key": testKeyName, "admin_user": testAdminUser, "default_user": testAdminUser, "cidr_list": testCIDRList, "install_script": testInstallScript, } logicaltest.Test(t, logicaltest.TestCase{ Factory: Factory, Steps: []logicaltest.TestStep{ testLookupRead(t, data, 0), testRoleWrite(t, testOTPRoleName, otpData), testLookupRead(t, data, 1), testNamedKeysWrite(t), testRoleWrite(t, testDynamicRoleName, dynamicData), testLookupRead(t, data, 2), testRoleDelete(t, testOTPRoleName), testLookupRead(t, data, 1), testRoleDelete(t, testDynamicRoleName), testLookupRead(t, data, 0), }, }) }
func TestBackend_roleReadOnly(t *testing.T) { config := logical.TestBackendConfig() config.StorageView = &logical.InmemStorage{} b, err := Factory(config) if err != nil { t.Fatal(err) } cid, connURL := prepareTestContainer(t, config.StorageView, b) if cid != "" { defer cleanupTestContainer(t, cid) } connData := map[string]interface{}{ "connection_url": connURL, } logicaltest.Test(t, logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{ testAccStepConfig(t, connData, false), testAccStepCreateRole(t, "web", testRole, false), testAccStepCreateRole(t, "web-readonly", testReadOnlyRole, false), testAccStepReadRole(t, "web-readonly", testReadOnlyRole), testAccStepCreateTable(t, b, config.StorageView, "web", connURL), testAccStepReadCreds(t, b, config.StorageView, "web-readonly", connURL), testAccStepDropTable(t, b, config.StorageView, "web", connURL), testAccStepDeleteRole(t, "web-readonly"), testAccStepDeleteRole(t, "web"), testAccStepReadRole(t, "web-readonly", ""), }, }) }
func TestBackend_CSRValues(t *testing.T) { defaultLeaseTTLVal := time.Hour * 24 maxLeaseTTLVal := time.Hour * 24 * 30 b, err := Factory(&logical.BackendConfig{ Logger: nil, System: &logical.StaticSystemView{ DefaultLeaseTTLVal: defaultLeaseTTLVal, MaxLeaseTTLVal: maxLeaseTTLVal, }, }) if err != nil { t.Fatalf("Unable to create backend: %s", err) } testCase := logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{}, } stepCount += len(testCase.Steps) intdata := map[string]interface{}{} reqdata := map[string]interface{}{} testCase.Steps = append(testCase.Steps, generateCSRSteps(t, ecCACert, ecCAKey, intdata, reqdata)...) logicaltest.Test(t, testCase) }
func TestSSHBackend_DynamicRoleCrud(t *testing.T) { testDynamicRoleData := map[string]interface{}{ "key_type": testDynamicKeyType, "key": testKeyName, "admin_user": testAdminUser, "default_user": testAdminUser, "cidr_list": testCIDRList, } respDynamicRoleData := map[string]interface{}{ "cidr_list": testCIDRList, "port": 22, "install_script": DefaultPublicKeyInstallScript, "key_bits": 1024, "key": testKeyName, "admin_user": testUserName, "default_user": testUserName, "key_type": testDynamicKeyType, } logicaltest.Test(t, logicaltest.TestCase{ AcceptanceTest: true, Factory: testingFactory, Steps: []logicaltest.TestStep{ testNamedKeysWrite(t, testKeyName, testSharedPrivateKey), testRoleWrite(t, testDynamicRoleName, testDynamicRoleData), testRoleRead(t, testDynamicRoleName, respDynamicRoleData), testRoleDelete(t, testDynamicRoleName), testRoleRead(t, testDynamicRoleName, nil), }, }) }
func TestBackend_basicHostRevoke(t *testing.T) { config := logical.TestBackendConfig() config.StorageView = &logical.InmemStorage{} b, err := Factory(config) if err != nil { t.Fatal(err) } cid, connURL := prepareTestContainer(t, config.StorageView, b) if cid != "" { defer cleanupTestContainer(t, cid) } connData := map[string]interface{}{ "connection_url": connURL, } // for host based mysql user logicaltest.Test(t, logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{ testAccStepConfig(t, connData, false), testAccStepRole(t, false), testAccStepReadCreds(t, "web"), }, }) }
// Test the certificates being registered to the backend func TestBackend_CertWrites(t *testing.T) { // CA cert ca1, err := ioutil.ReadFile("test-fixtures/root/rootcacert.pem") if err != nil { t.Fatalf("err: %v", err) } // Non CA Cert ca2, err := ioutil.ReadFile("test-fixtures/keys/cert.pem") if err != nil { t.Fatalf("err: %v", err) } // Non CA cert without TLS web client authentication ca3, err := ioutil.ReadFile("test-fixtures/noclientauthcert.pem") if err != nil { t.Fatalf("err: %v", err) } tc := logicaltest.TestCase{ AcceptanceTest: true, Backend: testFactory(t), Steps: []logicaltest.TestStep{ testAccStepCert(t, "aaa", ca1, "foo", false), testAccStepCert(t, "bbb", ca2, "foo", false), testAccStepCert(t, "ccc", ca3, "foo", true), }, } tc.Steps = append(tc.Steps, testAccStepListCerts(t, []string{"aaa", "bbb"})...) logicaltest.Test(t, tc) }
func TestSSHBackend_NamedKeysCrud(t *testing.T) { logicaltest.Test(t, logicaltest.TestCase{ Factory: testingFactory, Steps: []logicaltest.TestStep{ testNamedKeysWrite(t, testKeyName, testSharedPrivateKey), testNamedKeysDelete(t), }, }) }
// Test an untrusted self-signed client func TestBackend_untrusted(t *testing.T) { connState := testConnState(t, "test-fixtures/keys/cert.pem", "test-fixtures/keys/key.pem", "test-fixtures/root/rootcacert.pem") logicaltest.Test(t, logicaltest.TestCase{ Backend: testFactory(t), Steps: []logicaltest.TestStep{ testAccStepLoginInvalid(t, connState), }, }) }
func TestSSHBackend_DynamicKeyCreate(t *testing.T) { logicaltest.Test(t, logicaltest.TestCase{ Factory: Factory, Steps: []logicaltest.TestStep{ testNamedKeysWrite(t), testNewDynamicKeyRole(t), testDynamicKeyCredsCreate(t), }, }) }
// Test an untrusted self-signed client func TestBackend_untrusted(t *testing.T) { connState := testConnState(t, "../../../test/unsigned/cert.pem", "../../../test/unsigned/key.pem") logicaltest.Test(t, logicaltest.TestCase{ Backend: Backend(), Steps: []logicaltest.TestStep{ testAccStepLoginInvalid(t, connState), }, }) }
func TestMFALoginDenied(t *testing.T) { b := MakeTestBackend() logicaltest.Test(t, logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{ testAccStepEnableMFA(t), testAccStepLoginDenied(t, "user"), }, }) }
func TestBackend_basic(t *testing.T) { b := Backend() logicaltest.Test(t, logicaltest.TestCase{ Backend: b, Steps: []logicaltest.TestStep{ testAccStepUser(t, "web", "password", "foo"), testAccStepLogin(t, "web", "password"), }, }) }
func TestBackend_basic(t *testing.T) { logicaltest.Test(t, logicaltest.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Backend: Backend(), Steps: []logicaltest.TestStep{ testAccStepConfig(t), testAccStepWritePolicy(t, "test", testPolicy), testAccStepReadUser(t, "test"), }, }) }