Commit 2fee59d0 authored by Yann Garcia's avatar Yann Garcia
Browse files

Merge branch 'STF625_TASK4' of https://forge.etsi.org/rep/mec/AdvantEDGE into STF625_TASK4

parents 2739c611 694e9d67
Loading
Loading
Loading
Loading
+199 −4
Original line number Diff line number Diff line
@@ -732,10 +732,22 @@ func TestSubscriptionV2XMsgSubscription(t *testing.T) {
	updateScenario("mobility1")

	// POST
	_ = TestSubscriptionPost(t)
	expectedGetResponse := TestSubscriptionPost(t)

	// GET
	//todo
	//GET Subscription
	//expectedListResourceURL := "/" + testScenarioName + "vis/v2/subscriptions"
	//expectedResourceURL := expectedListResourceURL + "?subscription_type=v2x_msg"
	subscriptionTypeQuery := V2X_MSG
	testSubscriptionsGet(t, subscriptionTypeQuery, expectedGetResponse)

	// GET Individual Subscription
	testIndividualSubscriptionGet(t, expectedGetResponse)

	// PUT
	testIndividualSubscriptionPut(t, true)

	// DELETE
	testIndividualSubscriptionDelete(t, true)

	/******************************
	 * back to initial state section
@@ -744,6 +756,189 @@ func TestSubscriptionV2XMsgSubscription(t *testing.T) {

}

//Generic GET function for any subscription type

func testSubscriptionsGet(t *testing.T, subscriptionTypeQuery string, expectedResponse string) {

	/******************************
	 * expected response section
	 ******************************/
	//passed as a parameter since a POST had to be sent first

	/******************************
	 * request body section
	 ******************************/

	/******************************
	 * request queries section
	 ******************************/

	queryParam := make(map[string]string)
	queryParam["subscription_type"] = subscriptionTypeQuery

	/******************************
	 * request execution section
	 ******************************/
	var err error
	if expectedResponse == "" {
		_, err = sendRequest(http.MethodGet, "vis/v2/subscriptions", nil, nil, queryParam, http.StatusNotFound, SubGET)
		if err != nil {
			t.Fatalf("Failed to get expected response")
		}
	} else {
		rr, err := sendRequest(http.MethodGet, "/vis/v2/subscriptions", nil, queryParam, nil, http.StatusOK, SubGET)
		if err != nil {
			t.Fatalf("Failed to get expected response")
		}

		if rr != expectedResponse {
			t.Fatalf("Failed to get expected response")
		}
		log.Info("Received expected response for GET Subscription method")
	}
}

func testIndividualSubscriptionGet(t *testing.T, expectedResponse string) {

	/******************************
	 * expected response section
	 ******************************/
	//passed as a parameter since a POST had to be sent first

	/******************************
	 * request vars section
	 ******************************/
	vars := make(map[string]string)
	vars["subscriptionId"] = "1"

	/******************************
	 * request body section
	 ******************************/

	/******************************
	 * request queries section
	 ******************************/

	/******************************
	 * request execution section
	 ******************************/
	var err error
	if expectedResponse == "" {
		_, err = sendRequest(http.MethodGet, "/vis/v2/subscriptions/1", nil, vars, nil, http.StatusNotFound, IndividualSubscriptionGET)
		if err != nil {
			t.Fatalf("Failed to get expected response")
		}
	} else {
		rr, err := sendRequest(http.MethodGet, "/vis/v2/subscriptions/1", nil, vars, nil, http.StatusOK, IndividualSubscriptionGET)
		if err != nil {
			t.Fatalf("Failed to get expected response")
		}

		if rr != expectedResponse {
			t.Fatalf("Failed to get expected response")
		}
		log.Info("Received expected response for GET method")
	}
}

func testIndividualSubscriptionDelete(t *testing.T, expectSuccess bool) {

	/******************************
	 * request vars section
	 ******************************/
	vars := make(map[string]string)
	vars["subscriptionId"] = "1"

	/******************************
	 * request execution section
	 ******************************/

	if expectSuccess {
		_, err := sendRequest(http.MethodDelete, "/vis/v2/subscriptions/1", nil, vars, nil, http.StatusNoContent, IndividualSubscriptionDELETE)
		if err != nil {
			t.Fatalf("Failed to get expected response")
		}
	} else {
		_, err := sendRequest(http.MethodDelete, "/vis/v2/subscriptions/1", nil, vars, nil, http.StatusNotFound, IndividualSubscriptionDELETE)
		if err != nil {
			t.Fatalf("Failed to get expected response")
		}
	}
}

func testIndividualSubscriptionPut(t *testing.T, expectSuccess bool) string {
	/******************************
	 * expected response section
	 ******************************/

	expected_subscriptionType := "V2xMsgSubscription"
	expected_callbackReference := "MyCallback"

	expected_href := LinkType{Href: "http://meAppServer.example.com/vis/v2/subscriptions/123"}
	expected_self := Links{Self: &expected_href}
	//expected_link := V2xMsgSubscription{Links: &expected_self}
	expected_msgType := []string{"1", "2"}
	//expected_stdOrganization :=
	expected_filterCriteria := V2xMsgSubscriptionFilterCriteria{StdOrganization: "ETSI", MsgType: expected_msgType}
	expected_v2xMsgSubscription := V2xMsgSubscription{Links: &expected_self, CallbackReference: expected_callbackReference, ExpiryDeadline: nil, FilterCriteria: &expected_filterCriteria, RequestTestNotification: false, SubscriptionType: expected_subscriptionType, WebsockNotifConfig: nil}
	expected_v2xMsgSubscriptionPut_str, err := json.Marshal(expected_v2xMsgSubscription)
	if err != nil {
		t.Fatalf(err.Error())
	}
	fmt.Println("expected_v2xMsgSubscriptionPut_str: ", string(expected_v2xMsgSubscriptionPut_str))

	/******************************
	 * request vars section
	 ******************************/
	vars := make(map[string]string)
	vars["subscriptionId"] = "1"

	/******************************
	 * request body section
	 ******************************/

	subscriptionType := "V2xMsgSubscription"
	callbackReference := "MyCallback"
	msgType := []string{"1", "3"}
	//expected_stdOrganization :=
	filterCriteria := V2xMsgSubscriptionFilterCriteria{StdOrganization: "ETSI", MsgType: msgType}

	testv2xMsgSubscription := V2xMsgSubscription{CallbackReference: callbackReference, FilterCriteria: &filterCriteria, RequestTestNotification: false, SubscriptionType: subscriptionType, WebsockNotifConfig: nil}
	body, err := json.Marshal(testv2xMsgSubscription)
	if err != nil {
		t.Fatalf(err.Error())
	}
	fmt.Println("body: ", string(body))

	/******************************
	 * request queries section
	 ******************************/

	/******************************
	 * request execution section
	 ******************************/

	// TODO change status code
	rr, err := sendRequest(http.MethodPut, "/vis/v2/subscriptions/1", bytes.NewBuffer(body), nil, nil, http.StatusOK, IndividualSubscriptionPUT)
	if err != nil {
		t.Fatalf(err.Error())
	}
	log.Info("sendRequest done")

	var respBody V2xMsgSubscription
	err = json.Unmarshal([]byte(rr), &respBody)
	if err != nil {
		t.Fatalf(err.Error())
	}
	fmt.Println("respBody: ", respBody)
	if rr != string(expected_v2xMsgSubscriptionPut_str) {
		t.Fatalf(err.Error())
	}

	log.Info("Received expected response for PUT method")

	return string(expected_v2xMsgSubscriptionPut_str)
}
func TestV2xMsgPublicationPost(t *testing.T) {
	fmt.Println("--- ", t.Name())
	log.MeepTextLogInit(t.Name())