| 828 | } |
| 829 | |
| 830 | func (ts *AdminTestSuite) TestAdminUserUpdateFactor() { |
| 831 | u, err := models.NewUser("123456789", "test-delete@example.com", "test", ts.Config.JWT.Aud, nil) |
| 832 | require.NoError(ts.T(), err, "Error making new user") |
| 833 | require.NoError(ts.T(), ts.API.db.Create(u), "Error creating user") |
| 834 | |
| 835 | f := models.NewPhoneFactor(u, "123456789", "testSimpleName") |
| 836 | require.NoError(ts.T(), f.SetSecret("secretkey", ts.Config.Security.DBEncryption.Encrypt, ts.Config.Security.DBEncryption.EncryptionKeyID, ts.Config.Security.DBEncryption.EncryptionKey)) |
| 837 | require.NoError(ts.T(), ts.API.db.Create(f), "Error saving new test factor") |
| 838 | |
| 839 | var cases = []struct { |
| 840 | Desc string |
| 841 | FactorData map[string]interface{} |
| 842 | ExpectedCode int |
| 843 | }{ |
| 844 | { |
| 845 | Desc: "Update Factor friendly name", |
| 846 | FactorData: map[string]interface{}{ |
| 847 | "friendly_name": "john", |
| 848 | }, |
| 849 | ExpectedCode: http.StatusOK, |
| 850 | }, |
| 851 | { |
| 852 | Desc: "Update Factor phone number", |
| 853 | FactorData: map[string]interface{}{ |
| 854 | "phone": "+1976154321", |
| 855 | }, |
| 856 | ExpectedCode: http.StatusOK, |
| 857 | }, |
| 858 | } |
| 859 | |
| 860 | // Initialize factor data |
| 861 | for _, c := range cases { |
| 862 | ts.Run(c.Desc, func() { |
| 863 | var buffer bytes.Buffer |
| 864 | require.NoError(ts.T(), json.NewEncoder(&buffer).Encode(c.FactorData)) |
| 865 | w := httptest.NewRecorder() |
| 866 | req := httptest.NewRequest(http.MethodPut, fmt.Sprintf("/admin/users/%s/factors/%s/", u.ID, f.ID), &buffer) |
| 867 | req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", ts.token)) |
| 868 | ts.API.handler.ServeHTTP(w, req) |
| 869 | require.Equal(ts.T(), c.ExpectedCode, w.Code) |
| 870 | }) |
| 871 | } |
| 872 | } |
| 873 | |
| 874 | func (ts *AdminTestSuite) TestAdminUserCreateValidationErrors() { |
| 875 | cases := []struct { |