github.com/cozy/cozy-stack@v0.0.0-20240327093429-939e4a21320e/web/settings/external_ties_test.go (about) 1 package settings_test 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/cozy/cozy-stack/model/instance/lifecycle" 8 "github.com/cozy/cozy-stack/model/session" 9 csettings "github.com/cozy/cozy-stack/model/settings" 10 "github.com/cozy/cozy-stack/pkg/config/config" 11 "github.com/cozy/cozy-stack/tests/testutils" 12 "github.com/gavv/httpexpect/v2" 13 ) 14 15 func TestExternalTies(t *testing.T) { 16 config.UseTestFile(t) 17 testutils.NeedCouchdb(t) 18 setup := testutils.NewSetup(t, t.Name()) 19 testInstance := setup.GetTestInstance(&lifecycle.Options{ 20 Locale: "en", 21 Timezone: "Europe/Berlin", 22 Email: "alice@example.com", 23 ContextName: "test-context", 24 }) 25 sessCookie := session.CookieName(testInstance) 26 27 svc := csettings.NewServiceMock(t) 28 ts := setupRouter(t, testInstance, svc) 29 30 t.Run("WithBlockingSubscription", func(t *testing.T) { 31 svc.On("GetExternalTies", testInstance).Return(&csettings.ExternalTies{ 32 HasBlockingSubscription: true, 33 }, nil).Once() 34 35 e := testutils.CreateTestClient(t, ts.URL) 36 obj := e.GET("/settings/external-ties"). 37 WithCookie(sessCookie, "connected"). 38 WithHeader("Accept", "application/vnd.api+json"). 39 Expect().Status(200). 40 JSON(httpexpect.ContentOpts{MediaType: "application/vnd.api+json"}). 41 Object() 42 43 data := obj.Value("data").Object() 44 data.HasValue("type", "io.cozy.settings") 45 data.HasValue("id", "io.cozy.settings.external-ties") 46 47 attrs := data.Value("attributes").Object() 48 attrs.HasValue("has_blocking_subscription", true) 49 }) 50 51 t.Run("WithClouderyError", func(t *testing.T) { 52 svc.On("GetExternalTies", testInstance).Return(nil, errors.New("unauthorized")).Once() 53 54 e := testutils.CreateTestClient(t, ts.URL) 55 e.GET("/settings/external-ties"). 56 WithCookie(sessCookie, "connected"). 57 WithHeader("Accept", "application/vnd.api+json"). 58 Expect().Status(500). 59 Body().Contains("unauthorized") 60 }) 61 }