+ subscriptionParams := GetSubscriptionparams()
+
+ Subscription.SetResponseCB(func(resp *clientmodel.SubscriptionResponse) {
+ fmt.Println("TestSubscriptionHandling: notification received")
+ assert.Equal(t, len(resp.SubscriptionInstances), 1)
+ assert.Equal(t, *resp.SubscriptionInstances[0].XappEventInstanceID, int64(11))
+ assert.Equal(t, *resp.SubscriptionInstances[0].E2EventInstanceID, int64(22))
+ })
+
+ _, err := Subscription.Subscribe(subscriptionParams)
+ assert.Equal(t, err, nil)
+ <-time.After(1 * time.Second)
+}
+
+func TestSubscriptionWithClientProvidedIdHandling(t *testing.T) {
+ subscriptionParams := GetSubscriptionparams()
+ subscriptionParams.SubscriptionID = "myxapp"
+
+ Subscription.SetResponseCB(func(resp *clientmodel.SubscriptionResponse) {
+ fmt.Println("TestSubscriptionWithClientProvidedIdHandling: notification received")
+ assert.Equal(t, len(resp.SubscriptionInstances), 1)
+ assert.Equal(t, *resp.SubscriptionInstances[0].XappEventInstanceID, int64(11))
+ assert.Equal(t, *resp.SubscriptionInstances[0].E2EventInstanceID, int64(22))
+ })
+
+ _, err := Subscription.Subscribe(subscriptionParams)
+ assert.Equal(t, err, nil)
+ <-time.After(1 * time.Second)
+}
+
+func TestFailureNotificationHandling(t *testing.T) {
+ subscriptionParams := GetSubscriptionparams()
+ subscriptionParams.SubscriptionID = "send_failure_notification"
+
+ Subscription.SetResponseCB(func(resp *clientmodel.SubscriptionResponse) {
+ assert.Equal(t, len(resp.SubscriptionInstances), 1)
+ assert.Equal(t, *resp.SubscriptionInstances[0].XappEventInstanceID, int64(11))
+ assert.Equal(t, *resp.SubscriptionInstances[0].E2EventInstanceID, int64(0))
+ assert.Equal(t, resp.SubscriptionInstances[0].ErrorCause, "Some error")
+ assert.Equal(t, resp.SubscriptionInstances[0].ErrorSource, "SUBMGR")
+ assert.Equal(t, resp.SubscriptionInstances[0].TimeoutType, "E2-Timeout")
+ })
+
+ _, err := Subscription.Subscribe(subscriptionParams)
+ assert.Equal(t, err, nil)
+ <-time.After(1 * time.Second)
+}
+
+func TestBadRequestSubscriptionHandling(t *testing.T) {
+ subscriptionParams := GetSubscriptionparams()
+ subscriptionParams.SubscriptionID = "send_400_bad_request_response"
+
+ // Notification is not coming
+
+ _, err := Subscription.Subscribe(subscriptionParams)
+ assert.Equal(t, err.Error(), "[POST /subscriptions][400] subscribeBadRequest ")
+ fmt.Println("Error:", err)
+}
+
+func TestNotFoundRequestSubscriptionHandling(t *testing.T) {
+ subscriptionParams := GetSubscriptionparams()
+ subscriptionParams.SubscriptionID = "send_404_not_found_response"
+
+ // Notification is not coming
+
+ _, err := Subscription.Subscribe(subscriptionParams)
+ assert.Equal(t, err.Error(), "[POST /subscriptions][404] subscribeNotFound ")
+ fmt.Println("Error:", err)
+}
+
+func TestInternalServerErrorSubscriptionHandling(t *testing.T) {
+ subscriptionParams := GetSubscriptionparams()
+ subscriptionParams.SubscriptionID = "send_500_internal_server_error_response"
+
+ // Notification is not coming
+
+ _, err := Subscription.Subscribe(subscriptionParams)
+ assert.Equal(t, err.Error(), "[POST /subscriptions][500] subscribeInternalServerError ")
+ fmt.Println("Error:", err)
+}
+
+func TestServiceUnavailableSubscriptionHandling(t *testing.T) {
+ subscriptionParams := GetSubscriptionparams()
+ subscriptionParams.SubscriptionID = "send_503_Service_Unavailable_response"
+
+ // Notification is not coming
+
+ _, err := Subscription.Subscribe(subscriptionParams)
+ assert.Equal(t, err.Error(), "[POST /subscriptions][503] subscribeServiceUnavailable ")
+ fmt.Println("Error:", err)
+}
+
+func GetSubscriptionparams() *clientmodel.SubscriptionParams {
+ return &clientmodel.SubscriptionParams{
+ SubscriptionID: "",