|
5 | 5 | "encoding/json" |
6 | 6 | "io" |
7 | 7 | "net/http" |
| 8 | + "strconv" |
8 | 9 | "strings" |
9 | 10 | "testing" |
10 | 11 |
|
@@ -109,7 +110,6 @@ func TestCreateApp(t *testing.T) { |
109 | 110 | }) |
110 | 111 | } |
111 | 112 | } |
112 | | - |
113 | 113 | func TestCreateAndVerifyAppDetails(t *testing.T) { |
114 | 114 | httpClient := GetHttpclient(t) |
115 | 115 | appToCreate := client.CreateAppRequest{ |
@@ -763,3 +763,74 @@ func TestAppPorts(t *testing.T) { |
763 | 763 |
|
764 | 764 | }) |
765 | 765 | } |
| 766 | + |
| 767 | +func TestAppList(t *testing.T) { |
| 768 | + httpClient := GetHttpclient(t) |
| 769 | + t.Run("AppListEmpty_success", func(t *testing.T) { |
| 770 | + resp, err := httpClient.GetAppsWithResponse(t.Context(), &client.GetAppsParams{}) |
| 771 | + require.NoError(t, err) |
| 772 | + require.Equal(t, http.StatusOK, resp.StatusCode()) |
| 773 | + require.NotNil(t, resp.JSON200) |
| 774 | + require.Empty(t, resp.JSON200.Apps, "The apps list should be empty") |
| 775 | + }) |
| 776 | + |
| 777 | + t.Run("AppListShouldContainsAllTheelements_success", func(t *testing.T) { |
| 778 | + expectedAppNumber := 5 |
| 779 | + for i := 0; i < expectedAppNumber; i++ { |
| 780 | + r, err := httpClient.CreateApp(t.Context(), &client.CreateAppParams{ |
| 781 | + SkipPython: f.Ptr(false), |
| 782 | + SkipSketch: f.Ptr(false), |
| 783 | + }, client.CreateAppRequest{ |
| 784 | + Icon: f.Ptr("🌎"), |
| 785 | + Name: "HelloWorld-" + strconv.Itoa(i), |
| 786 | + Description: f.Ptr("My HelloWorld description")}) |
| 787 | + require.NoError(t, err) |
| 788 | + defer r.Body.Close() |
| 789 | + } |
| 790 | + resp, err := httpClient.GetAppsWithResponse(t.Context(), &client.GetAppsParams{}) |
| 791 | + require.NoError(t, err) |
| 792 | + require.Equal(t, http.StatusOK, resp.StatusCode()) |
| 793 | + require.NotNil(t, resp.JSON200) |
| 794 | + require.Equal(t, len(*resp.JSON200.Apps), expectedAppNumber, "The apps list should contain "+strconv.Itoa(expectedAppNumber)+" elements") |
| 795 | + |
| 796 | + }) |
| 797 | + |
| 798 | + t.Run("AppListDefault_success", func(t *testing.T) { |
| 799 | + r, err := httpClient.CreateApp(t.Context(), &client.CreateAppParams{ |
| 800 | + SkipPython: f.Ptr(false), |
| 801 | + SkipSketch: f.Ptr(false), |
| 802 | + }, client.CreateAppRequest{ |
| 803 | + Icon: f.Ptr("🌎"), |
| 804 | + Name: "HelloWorld-default", |
| 805 | + Description: f.Ptr("My HelloWorld description")}) |
| 806 | + require.NoError(t, err) |
| 807 | + defer r.Body.Close() |
| 808 | + body, err := io.ReadAll(r.Body) |
| 809 | + require.NoError(t, err) |
| 810 | + require.Equal(t, http.StatusCreated, r.StatusCode) |
| 811 | + var createdApp client.CreateAppResponse |
| 812 | + err = json.Unmarshal(body, &createdApp) |
| 813 | + require.NoError(t, err) |
| 814 | + require.NotNil(t, createdApp.Id) |
| 815 | + defaultAppId := *createdApp.Id |
| 816 | + |
| 817 | + editResp, err := httpClient.EditAppWithResponse( |
| 818 | + t.Context(), |
| 819 | + defaultAppId, |
| 820 | + client.EditRequest{ |
| 821 | + Default: f.Ptr(true), |
| 822 | + }, |
| 823 | + ) |
| 824 | + require.NoError(t, err) |
| 825 | + require.Equal(t, http.StatusOK, editResp.StatusCode()) |
| 826 | + |
| 827 | + resp, err := httpClient.GetAppsWithResponse(t.Context(), &client.GetAppsParams{Filter: f.Ptr("default")}) |
| 828 | + require.NoError(t, err) |
| 829 | + require.Equal(t, http.StatusOK, resp.StatusCode()) |
| 830 | + require.NotNil(t, resp.JSON200) |
| 831 | + require.Equal(t, 1, len(*resp.JSON200.Apps), "The apps list should contain 1 element") |
| 832 | + require.Equal(t, true, *(*resp.JSON200.Apps)[0].Default, "The app should be default") |
| 833 | + app := (*resp.JSON200.Apps)[0] |
| 834 | + require.Equal(t, "HelloWorld-default", *app.Name, "The app name should be 'HelloWorld-default'") |
| 835 | + }) |
| 836 | +} |
0 commit comments